Pintar una celda de la grilla con un color distinto segun el dato que tenga??

1,662 views
Skip to first unread message

agustin

unread,
Nov 29, 2012, 9:56:33 AM11/29/12
to publice...@googlegroups.com
Estoy buscando soluciones alternativas a mi problema de las reservas.
Mi inquietud es la siguiente tengo una tabla con varias columnas y varios registros queria saber si el dato era de tal o cual tipo si podia cambiar de color la celda??
Por ejemplo

si el dato es "A" que me apareza con color rojo si es "B" verde

dato1         columna1 columna2 column3 columna4
Nombre1         A                            B
Nombre2                           B
Nombre3         A                                           B

Me deberia mostrar la columna1 y Nombre1 en rojo, la columna3 y nombre1 con verde y asi el resto


Muchas gracias por todo

Fox Learner

unread,
Nov 29, 2012, 10:43:56 AM11/29/12
to publice...@googlegroups.com
Agustin,

Configura un método con una "bandera" en una estructura CASE para abarcar todos los casos que desees.

dentro de cada caso establece las propiedades personalizadas.

En tu código, llama a tu método cuando lo necesites y el se encargara de hacer los cambios.

Si sabes sobre clases, de seguro podrás implementarlo con eso, pero esta es una idea que puedes tomar como base.

Saludos!

Carlos Alfaro

unread,
Nov 29, 2012, 11:33:32 AM11/29/12
to publice...@googlegroups.com

Saludos Agustín:

 

Mira en la ayuda de VFP como se aplica el comando DynamicBackColor (propiedad).

 

Perdón que no te doy más detalle, pero estoy corto de tiempo.

 

Bendiciones.

 

Carlos Alfaro

--
 
 

Jairo Miranda

unread,
Nov 29, 2012, 1:50:49 PM11/29/12
to publice...@googlegroups.com

*Crear método HitRow y asígnale 1

 

*En el método AfterRowColChange de la grid

 

ThisFormt.HitRow = RECNO()

 

WITH ThisForm.Cbodega1.grid1

.SetAll([DynamicBackColor],"IIF(RECNO() =;

ThisForm.HitRow,RGB(249,239,185),RGB(187,208,176))",[Column])

.SetAll([DynamicFontBold] ,"IIF(RECNO() = ThisForm.HitRow ,.T.,.F.",;

[Column])

.Refresh()

ENDWITH

 

JM

--
 
 

agustin

unread,
Nov 29, 2012, 3:43:26 PM11/29/12
to publice...@googlegroups.com
Yo encontre lo que posiblemente sea una solucion es realizar lo siguiente

thisform.grid.column1.dynamicbackcolor="iif(campo=valor, RGB(111,111,222), RGB(123,0,0))"

que me permite pintar una celda en particular segun la condicion, ahora el tema que me surge es puedo en la condicion del IFF poner que me cheque el valor por ejemplo de una variable local??

Por lo que probe hasta ahora no

Muchas gracias

Robert Martínez

unread,
Nov 29, 2012, 4:00:11 PM11/29/12
to publice...@googlegroups.com

Hector Kuhn

unread,
Nov 29, 2012, 4:23:08 PM11/29/12
to publice...@googlegroups.com
*!*    1 = RGB(115,215,148)            verde
*!*    2 = RGB(255,255,151)            amarillo
*!*    3 = RGB(241,101,41)            rojo
*!*    4 = RGB(0,255,255)            celeste
*!*    5 = RGB(53,154,255)            azul
*!*    6 = RGB(164,82,0)            marron

This.column3.DynamicBackColor ="IIF(LEFT(Csrauxestado.switch,1)='1',RGB(206,191,134),RGB(239,240,240))"

This.column7.DynamicBackColor ="IIF(Csrauxestado.psrgb<=1,RGB(115,215,148),IIF(Csrauxestado.psrgb=2,RGB(255,255,151),IIF(csrAuxestado.psrgb=3,RGB(241,101,41),IIF(CsrAuxestado.psrgb=5,RGB(53,154,255),RGB(164,82,0)))))"
This.column8.DynamicBackColor ="IIF(Csrauxestado.psrgb<=1,RGB(115,215,148),IIF(Csrauxestado.psrgb=2,RGB(255,255,151),IIF(csrAuxestado.psrgb=3,RGB(241,101,41),IIF(CsrAuxestado.psrgb=5,RGB(53,154,255),RGB(164,82,0)))))"
This.column9.DynamicBackColor ="IIF(Csrauxestado.psrgb<=1,RGB(115,215,148),IIF(Csrauxestado.psrgb=2,RGB(255,255,151),IIF(csrAuxestado.psrgb=3,RGB(241,101,41),IIF(CsrAuxestado.psrgb=5,RGB(53,154,255),RGB(164,82,0)))))"

This.column10.DynamicBackColor="IIF(Csrauxestado.ddrgb<=1,RGB(115,215,148),IIF(Csrauxestado.ddrgb=2,RGB(255,255,151),IIF(csrAuxestado.ddrgb=3,RGB(241,101,41),IIF(CsrAuxestado.ddrgb=5,RGB(53,154,255),RGB(164,82,0)))))"
This.column11.DynamicBackColor="IIF(Csrauxestado.ddrgb<=1,RGB(115,215,148),IIF(Csrauxestado.ddrgb=2,RGB(255,255,151),IIF(csrAuxestado.ddrgb=3,RGB(241,101,41),IIF(CsrAuxestado.ddrgb=5,RGB(53,154,255),RGB(164,82,0)))))"
This.column12.DynamicBackColor="IIF(Csrauxestado.ddrgb<=1,RGB(115,215,148),IIF(Csrauxestado.ddrgb=2,RGB(255,255,151),IIF(csrAuxestado.ddrgb=3,RGB(241,101,41),IIF(CsrAuxestado.ddrgb=5,RGB(53,154,255),RGB(164,82,0)))))"

This.column13.DynamicBackColor="IIF(Csrauxestado.csrgb=4,RGB(0,255,255),RGB(115,215,148))"




--
 
 

ZeRoberto

unread,
Nov 29, 2012, 4:24:09 PM11/29/12
to publice...@googlegroups.com
Mejor usa SETTALL()


--
 
 

Robert Martínez

unread,
Nov 29, 2012, 5:35:08 PM11/29/12
to publice...@googlegroups.com

Usando el SetAll, con un método en el Formulario con el nombre cGridBackColor que retorna el color de fondo de la celda en base a las condiciones de cada campo de la tabla.

thisform.grid1.setall("DynamicBackColor","thisform.cGridBackColor()","Column")


Reply all
Reply to author
Forward
0 new messages