Cambiar de color una celda de un grid en foxpro

Necesito calbiar ciertas celdas de mi grid, ya lo hice con el DynamicBackColor
pero me cambia toda la fila y solo quiero ciertas celdas (semana es mi columna y reprogramacion. Cor1 es mi campo de la base de datos, lo conciono que si hay un numero mayor o igual a 1 me pinta la celda, pero me la pinta toda)
Ejemplo
thisform.grid1.SetAll('DynamicBackColor','IIF(reprogramacion.cor1>=0,RGB(255,255,128),RGB(255,255,255)))','Column')
y tambien lo hice asi
thisform.grid1.semana.SetAll('DynamicBackColor','IIF(reprogramacion.cor1>=0,RGB(255,255,128),RGB(255,255,255))','Column')

2 Respuestas

Respuesta
2
Lo que pasa es que estás colocando mal la condición, pues tú dices que si es mayor o igual a 1 te pinte la celda, de lo contrario te la deje en blanco, pero la condición que le estás colocando es que si es mayor o igual a cero te pinte la celda como se indica en la siguiente linea:
thisform.grid1.semana.SetAll('DynamicBackColor','IIF(reprogramacion.cor1>=0,RGB(255,255,128),RGB(255,255,255))','Column')
Por eso te pinta todas las celdas, la condición correcta debería ser la siguiente:
thisform.grid1.semana.SetAll('DynamicBackColor','IIF(reprogramacion.cor1>=1,RGB(255,255,128),RGB(255,255,255))','Column')
Prueba con la anterior línea.
que tal puse la condicion pero no hace nada,no cambia de color,la condicion la puse en el init del grid,ademas hice otra prueba y quitando la columna es decir
thisform.grid1.SetAll('DynamicBackColor','IIF(reprogramacion.cor1>=1,RGB(255,255,128),RGB(255,255,255))','Column')
si lo hace pero me pinta toda la fila, que hago?
Trata con esto:
Thisform.Column1.DynamicBackColor = 'IIF(reprogramacion.cor1>=1,RGB(255,255,128),RGB(255,255,255))" esto ya debe solucionar tu problema si gustas regálame tu correo para enviarte un pequeño ejemplo sobre el respecto.
Que tal gracias por contestar, mira puse esa linea de código en el init del grid, pero no cambia nada de color, ademas le añadí el nombre del grid es decir y le quite las comillas del final para poner un apostrefe... Thisform.grid.Column1. DynamicBackColor = 'IIF(reprogramacion.cor1>=1, RGB(255,255,128), RGB(255,255,255))'
Mi correo es [email protected] de ante mano gracias
Te he enviado un ejemplo a tu correo.
Respuesta

Esta Rutina te permite colocar color a la columna en forma intermadia

*----Color a columna-------
n=0
FOR i=1 TO this.Parent.grid1.ColumnCount

IF i=1
c_colgrid ='Column' +TRANSFORM(i)
i=i-1
ELSE
n=(i)+1
c_colgrid ='Column' +TRANSFORM(n)
ENDIF

IF n<=this.Parent.grid1.ColumnCount
WITH this.Parent.grid1.&c_colgrid
.DynamicBackColor='IIF(RECNO() = ThisForm.HitRow, RGB(213,250,253), RGB(242,252,253))'
ENDWITH
ENDIF
i=i+1
ENDFOR

*---- propiedades columna-------
n=0
FOR i=1 TO this.Parent.grid1.ColumnCount

IF i=1
c_colgrid ='Column' +TRANSFORM(i)
i=i-1
ELSE
n=(i)+1
c_colgrid ='Column' +TRANSFORM(n)
ENDIF

IF n<=this.Parent.grid1.ColumnCount
WITH this.Parent.grid1.&c_colgrid
.DynamicBackColor='IIF(RECNO() = ThisForm.HitRow, RGB(213,250,253), RGB(242,252,253))'
Endwith
Endif
i=i+1
ENDFOR

La colocan el el AfterrowColChange del Grid

Esta Rutina te permite colocar color a la columna en forma intermadia

*----Color a columna-------
n=0
FOR i=1 TO this.Parent.grid1.ColumnCount

IF i=1
c_colgrid ='Column' +TRANSFORM(i)
i=i-1
ELSE
n=(i)+1
c_colgrid ='Column' +TRANSFORM(n)
ENDIF

IF n<=this.Parent.grid1.ColumnCount
WITH this.Parent.grid1.&c_colgrid
.DynamicBackColor='IIF(RECNO() = ThisForm.HitRow, RGB(213,250,253), RGB(242,252,253))'
Endwith
Endif
i=i+1
ENDFOR

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas