FoxPro/Visual FoxPro - Cómo colorear filas de un grid de acuerdo a múltiples condiciones

 
Vista:
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cómo colorear filas de un grid de acuerdo a múltiples condiciones

Publicado por Jose Francisco (166 intervenciones) el 25/08/2018 00:46:12
Buenas tardes estimados, tengo un sistema de consultorio , con consultas programadas , en ejecución y finalizadas.
Necesito que al verse el gris con los datos ya cargados me muestre lo siguiente sobre las consultas :
"Programadas" que la fila del grid sea de color gris.
"En ejecucion" que la fila del grid sea de color rojo.
"Finalizada" que la fila del grid sea de color verde.

He logrado que me muestre solo una y no todas las filas de acuerdo a las condiciones, necesito todas y con cada color.
Aguardo respuesta , gracias .
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Abel
Val: 642
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cómo colorear filas de un grid de acuerdo a múltiples condiciones

Publicado por Abel (286 intervenciones) el 25/08/2018 15:42:53
Supondré que el nombre del campo que contiene las variables "Programadas", "En ejecucion" y "Finalizada" tiene por nombre <Consulta>; en ese caso; carga lo siguiente en el método "DynamicBackColor" de la columna que desees aparezca con diferente color:

icase(Consulta="Programadas",RGB(240,240,240),Consulta="En ejecucion",RGB(250,0,0),Consulta="Finalizada",RGB(0,255,0),RGB(255,255,255))
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cómo colorear filas de un grid de acuerdo a múltiples condiciones

Publicado por Jose Francisco (166 intervenciones) el 25/08/2018 15:52:09
Estimado , si , esas son las variables, (y en vez de consulta el campo se llama estado) pero necesito que se coloreen las fila entera de cada caso , NO las columnas.-
Estuve probando con:
this.setall("DynamicbackColor","IIF(estado = 'Programada',RGB(192,192,192),RGB(255,255,0))","Column")
this.setall("DynamicbackColor","IIF(estado = 'En Ejecución',RGB(255,0,0),RGB(255,255,0))","Column")
this.setall("DynamicbackColor","IIF(estado = 'Finalizada',RGB(0,128,0),RGB(255,255,0))","Column")

Programé los tres casos pero sólo me toma uno sólo , en éste caso el último que es de color verde.-

(También lo hice con tres if aparte pero no funciona)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Fernando D.
Val: 13
Ha disminuido su posición en 8 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cómo colorear filas de un grid de acuerdo a múltiples condiciones

Publicado por Fernando D. (15 intervenciones) el 26/08/2018 12:15:55
Hola José:

La respuesta de Abel es correcta: Se debe crear una única condición ICASE con todas las posibles opciones de color que quieras y basadas en un campo de la tabla (o suma de campos), y esa condición ponerla en todas las columnas con SetAll por ejemplo.

Al final, una fila es la suma de todas sus columnas, por lo que si todas las columnas tienen la misma condición ICASE, entonces se crearán filas del mismo color porque todos los campos de la misma cumplirán la condición.

Saludos.-
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cómo colorear filas de un grid de acuerdo a múltiples condiciones

Publicado por Fidel José (657 intervenciones) el 26/08/2018 17:14:34
Aprovecho para saludar al gran Fernando D. Bozzo!!!
En algunos casos puede convenir utilizar una UDF o un Método del formulario (o de una clase), como en este ejemplo:

* Cursor = "pedipend"
* Campo (Integer) = "priori"
* grid.name = "Grilla"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
this.grilla.SetAll("DynamicBackColor",[pCarga_Solve_priori(pedipend.priori)],"Column")
 
PROCEDURE pCarga_Solve_Priori
*----------------------------
* RGB(255,255,255) = 16777215
* RGB(255,216,176) = 11589887
* RGB(255,174,174) = 11448063
*----------------------------
LPARAMETERS tnCase,tnStdBackColor
tnStdBackColor = EVL(m.tnStdBackColor,16777215 )
RETURN ICASE(EMPTY(m.tnCase), m.tnStdBackColor ,;
				m.tnCase = 1 , 11589887 ,;
				m.tnCase = 2 , 11448063 ,;
				m.tnStdBackColor )
ENDPROC

En la función "pCarga_Solve_Priori", se utiliza el parámetro tnStdBackColor para pasar el BackColor que usan las columnas del grid, para el caso en que no sea blanco.
Utiizar el número de color en lugar de las correspondientes RGB(), agiliza un poco el recorrido por el grid.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cómo colorear filas de un grid de acuerdo a múltiples condiciones

Publicado por Jose Francisco (166 intervenciones) el 26/08/2018 21:16:03
Excelente Fernando y Abel , me funcionó correctamente.-
Muchas Gracias!
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 313
Bronce
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Cómo colorear filas de un grid de acuerdo a múltiples condiciones

Publicado por Jose Francisco (166 intervenciones) el 29/08/2018 20:41:32
Muchas Gracias Fidel José , Fernando y Abel, funcionó correctamente.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar