Subido por José Carbonell

colores de lima fox

Anuncio
Thisform::Init
*** Alternar columnas entre blanco y verde ***
Thisform.MyGrid.SetAll("DynamicBackColor", ;
"IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255), RGB(0,255,0))", ;
"Column")
Grid con múltiples colores
Los Grids de Visual FoxPro tienen la capacidad de cambiar de color sus filas, aquí te
presentamos una forma en que puede darle más capacidad.
Los ejemplos que vienen con la documentación de la ayuda en el método SetAll
muestran cómo hacer cambiar las filas basándose en la ejecución sencilla de un IIF
(If inmediato) como por ejemplo:
Hasta aqui puede ser sencillo, pero que tal si deseas tener mas de 2 o 3 colores?, o
si es un número finito de posibles colores?, la solución es mandar a ejecutar una
función o método que haga lo propio.
Un ejemplo de uso, un form donde se colorean las lineas del grid de acuerdo a la
edad de la persona:
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
OPEN DATABASE (HOME(2)+"\data\testdata.DBC")
Use employee
Endproc
Procedure Init
This.MyGrid.SetAll("DynamicBackColor","Thisform.MyColorByYear(birth_d
ate)","Column")
Endproc
PROCEDURE myColorbyYear
LPARAMETERS tdBirthDate
lnColor = 0xFFFFFF && Blanco por default
lnAnnios = YEAR(DATE())-YEAR(tdBirthDate)
DO CASE
CASE BETWEEN(lnAnnios,20,40)
lnColor = RGB(100,100,150)
CASE BETWEEN(lnAnnios,41,45)
lnColor = RGB(255,255,0)
CASE BETWEEN(lnAnnios,46,50)
lnColor = RGB(255,100,0)
CASE BETWEEN(lnAnnios,51,60)
lnColor = RGB(255,0,0)
CASE BETWEEN(lnAnnios,61,90)
lnColor = RGB(0,255,0)
ENDCASE
RETURN lnColor
ENDPROC
PROCEDURE Unload
CLOSE TABLES ALL
CLOSE DATABASES ALL
ENDPROC
Enddefine
Descargar