Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Gridhighlighter Colors
Message
 
À
09/09/2005 03:53:05
Cetin Basoz
Engineerica Inc.
Izmir, Turquie
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire d'écran & Écrans
Versions des environnements
Visual FoxPro:
VFP 6 SP5
OS:
Windows 2000 SP4
Network:
Windows 2000 Server
Database:
Visual FoxPro
Divers
Thread ID:
01047761
Message ID:
01048000
Vues:
5
Cetin

Fabulous!!!!

By the way - don't you ever sleep?????

Thanks for all your help

Colin

>You can absolutely use RGB() instead of 0x... Actually you can use anything there that returns a numeric value in the range 0...16777215.
>
>I wast lazy to write rgb(255,0,0) and use 0xFF instead (to be clear 0x0000FF). All of these return the same value:
>
>? rgb(255,255,0)
>? 0x0000FF
>? 255
>
>In RGB() function colors are RGB( red, green, blue ). Each of the red,green,blue components could be in 0..255 range (which in hex notation 0x0...0xFF). With hex type writing it's however:
>
>0xBlueGreenRed
>
>rgb(0,0,0) = 0x000000 = 0
>rgb(255,255,255) = 0xFFFFFF = 16777215
>rgb(255,255,0) = 0x00FFFF = 65535
>rgb(128,128,128) = 0x808080 = 8421504
>and so on.
>
>A more flexible version of the code (I suggest this one in fact, as it's easier to modify per column as you wish).
>
>
>Public oForm
>oForm = Createobject("myForm")
>oForm.Show()
>
>Define Class myForm As Form
>  DataSession = 2
>  Height = 400
>  Width = 600
>
>  Add Object myGrid As Grid With ;
>    Height = 400, Width = 600, RecordSource="employee"
>
>  Procedure Load
>    Use employee
>  Endproc
>
>  Procedure Init
>    For Each oColumn In This.myGrid.Columns
>      oColumn.DynamicBackColor = "thisform.MyColColor(["+oColumn.ControlSource+"])"
>    Endfor
>  Endproc
>
>  Procedure myColColor
>    Lparameters tcControlSource
>    Local luValue, lnColor
>    lnColor = 0xFFFFFF && default white
>    If Type(m.tcControlSource) = 'G'
>      Return m.lnColor
>    Endif
>    luValue = Evaluate(m.tcControlSource)
>    Do Case
>      Case Lower(m.tcControlSource) = "employee.title"
>        If Lower(m.luValue) = "sales manager"
>          lnColor = Rgb(255,255,0)
>        Endif
>      Case Lower(m.tcControlSource) = "employee.birth_date"
>        If Year(luValue) % 2 = 0
>          lnColor = Rgb(0,255,255)
>        Endif
>    Endcase
>    Return m.lnColor
>  Endproc
>Enddefine
>
>
>With this version:
>
>  Procedure Init
>    For Each oColumn In This.myGrid.Columns
>      oColumn.DynamicBackColor = "thisform.MyColColor(["+oColumn.ControlSource+"])"
>    Endfor
>  Endproc
>
>Sets each column's dynamicbackcolor relevant to its contents (controlsource name is sent to method). If you check columns' properties at runtime it shows as:
>Column1.ControlSource = ...
>...
>ColumnX.ControlSource = "employee.title"
>ColumnX.DynamicBackColor = "thisform.myColColor([employee.title])"
>ColumnY.ControlSource = "employee.birth_date"
>ColumnY.DynamicBackColor = "thisform.myColColor([employee.birth_date])"
>
>MyColor method then checks passed controlsource. If it's a general field returns default color white at top. Otherwise checks if it's 'title' or 'birth_date' column and returns choosen colors for the current row value (ie: if born on an even year Cyan). While it's not too late I suggest you code as this version. It's much more flexible for later modifications if need be.
>Cetin
Specialist in Advertising, Marketing, especially Direct Marketing

I run courses in Business Management and Marketing
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform