FoxPro/Visual FoxPro - PROBLEMA PARA AVANZADOS

   
Vista:

PROBLEMA PARA AVANZADOS

Publicado por KEVIN HARNOLLD VECHARA AGUILA (41 intervenciones) el 26/10/2007 14:35:01
HOLA A TODOS

TENGO UNA TABLA QUE CARGO EN UN GRID, Y QUIERO QUE CUANDO EL VALOR DE UN CAMPO SEA
1 EL COLOR SEA ROJO
2 EL COLOR SEA VERDE
3 EL COLOR SEA AMARILLO
4 EL COLOR SEA AZUL

ESTO LO DEBE HACER AL CARGAR EL GRID.

Ademas que siempre permanesca el color siempre y cuando el color lo indique.


MUCHAS 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

RE:PROBLEMA PARA AVANZADOS

Publicado por Oscar Meza (78 intervenciones) el 26/10/2007 15:18:29
Hola

Yo tengo un grind igual al que requieres
1- Crear un metodo Det_Color

PARAMETERS prpEstado
public valret
DO CASE
CASE prpEstado="A"
valret=RGB(255,255,128)
CASE prpEstado="P"
valret=RGB(255,36,36)
CASE prpEstado="F"
valret=RGB(0,196,196)
CASE prpEstado="B"
valret=RGB(255,155,106)
OTHERWISE
valret=RGB(255,255,255)
ENDCASE

RETURN valret
* donde prpEstado sera igual a tus numeros 1,2,3...

2- el la propiedades de cada columna
Thisform.Det_Color(alltrim(crsDetalle.Estado))

donde "crsDetalle.Estado" es el campo donde guardo el estado en que se encuentra
y ese le paso de parametro al metodo Det_Color

espero te sirva..............
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

RE:PROBLEMA PARA AVANZADOS

Publicado por neo (1601 intervenciones) el 26/10/2007 15:24:33
Puedes utilizar un Do Case en el init del textbox del grid en cuestion.

algo asi:

En el Init del Textbox, column1, Grid1:

Do Case

Case Thisform.column1.text1.value=1
Thisform.column1.text1.backcolor=rgb(255,0,0) && Rojo

Case Thisform.column1.text1.value=2
Thisform.column1.text1.backcolor=rgb(0,128,0) && Verde

Case Thisform.column1.text1.value=3
Thisform.column1.text1.backcolor=rgb(255,255,128) && Amarillo

Case Thisform.column1.text1.value=4
Thisform.column1.text1.backcolor=rgb(0,0,255) && Azul

Thisform.grid1.refresh
End Case

Note;
Si deseas actualizar desde cualquier objeto o del mismo form:
Thisform.grid1.column1.text1.init
Thisform.grid1.refresh

Suerte►
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

RE:PROBLEMA PARA AVANZADOS

Publicado por KEVIN HARNOLLD VECHARA AGUILA (41 intervenciones) el 26/10/2007 15:50:18
GRACIAS MUCHACHOS

PERO LOS EJEMPLOS PLANTEADOS SOLO EVALUA EL PRIMER TEXT Y A LOS DEMAS TEXT LES PONE EL MISMO VALOR Y LO QUE NECESITO ES QUE PARA 50 FILAS O MAS CADA TEXT EN BLACKCOLOR SEA DISTINTO

GRACIAS.
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

RE:PROBLEMA PARA AVANZADOS

Publicado por enrique (1041 intervenciones) el 26/10/2007 17:55:52
en el form crea un metodo COLOR_FONDO

do case
case tu_campo = 1
return(rgb(255,0,0))
case tu_campo = 2
return(rgb(0,128,0))
case tu_campo = 3
return(rgb(255,255,0))
case tu_campo = 4
return(rgb(0,128,255))
otherwise
return(rgb(255,255,255))
endcase

luego en el dynamicbackcolor de la columna

thisform.color_fondo()

ESPERO TE SIRVA
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

RE:PROBLEMA PARA AVANZADOS

Publicado por Fernando Mora (42 intervenciones) el 30/10/2007 02:25:05
Yo he programado esto y lo hice de la siguiente manera

Suponiendo que tienes una tabla de datos llamada EJEMPLO1 y dentro de esta tabla un campo llamado VALOR y contiene valores que pueden ser 1,2,3,4 o 5

Escribes esto en el evento Init de tu grid

This.SetAll("DynamicBackColor", "IIF(EJEMPLO1.VALOR=1, RGB(255,0,0), ;
IIF(EJEMPLO1.VALOR=2, RGB(255,255,128), ;
IIF(EJEMPLO1.VALOR=3, RGB(0,128,0), ;
IIF(EJEMPLO1.VALOR=4, RGB(0,0,0), RGB(0,0,255)))))", "Column")

y listo amigo, solucionado, el sistema cambiara dinamicamente el fondo de las columnas en base al valor de la tabla

Ten mucho cuidado al anidar los IIF() no puedes fallar, que no se te escape ni una coma y ni un parentesis o si no no te funciona, ni te da error ni nada.

Tengan en cuenta que no se puede anidar mas de 7 IIF() pasado eso el sistema ya no te acepta

Saludos

Fernando Mora
Machala - Ecuador
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