FoxPro/Visual FoxPro - Colorear filas de un Grid

   
Vista:

Colorear filas de un Grid

Publicado por Juan (230 intervenciones) el 26/11/2012 16:51:15
Buenas tardes, alguien me dice como puedo hacer para colorear una fila si y otra no de un grid.

He probado de la siguiente manera

oGrd=thisform.grid1

for nI=1 to oGrd.ColumnCount
oGrd.columns(nI).dynamicbackcolor="iif(recno()%2=0,rgb(255,0,0),rgb(0,0,255))"
endfor

Esto funciona bien pero si tengo registros borrados, me descoloca el orden de colorear y puede que me salgan algunas juntas.

Saben si hay alguna otra forma que no vaya con la tabla, que sea siempre una si y otra no.

Un saludo
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

Colorear filas de un Grid

Publicado por Saul (676 intervenciones) el 26/11/2012 17:23:16
En tu Grid
En cada columna

Column1
DynamicBackColor

Por este codigo

IIF(ContFila,Rgb(255,255,0),IIF(MOD(RECNO( ), 2)=0, RGB(255,255,255),RGB(181,232,208)))

Tengo una tabla PruebaTabla

**Detalle del Contrato
Create Cursor Dist_Utilidad (;
Integra C(5),;
Nombre C(50),;
ContFila L (1))

Y listo allí en este cursor pones tus datos y el grid se te pondra un fila si y una fila no.. del color que tu decidas..

Saludos y suerte

Sha
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

Colorear filas de un Grid

Publicado por Fidel (321 intervenciones) el 28/11/2012 00:39:14
El dynamic está respondiendo a tu pedido. Asocias el color a que el número de registro sea par o impar y el número de registro no cambiará hasta que hagas un pack (cosa que limpiaría el control grid y te quedaría en blanco). Cuando estando SET DELETE ON, borras un registro, se ocultará y te quedarán dos pares seguidos ó dos impares seguidos. Si utilizas un índice, esta situación puede repetirse en numerosos casos.

Para evitar eso se puede agregar un campo Interger al cursor y renumerar en cada cambio.
Suponemos que el cursor se llama "grCursor" y el campo interger se llama "Orden",
Agregamos un método en el formulario que se llame "Ordenar"

En el Init del formulario, iría:
Al configurar el grid:
***********************
Thisform.Ordenar()
WITH thisform.grid1
.SetAll("DynamicBackColor","IIF(MOD(grCursor.orden, 2)=0, RGB(233,232,228),RGB(217,220,212))", "Column")
endwith


* Método Ordenar
nOrd=0
select grCursor
nREc=Recno()
scan
nOrd=nOrd+1
replace orden with nOrd
endscan
if nRec#0
go nrec
else
go top
endif
thisform.grid1.refresh
RETURN



* Cuando borras un registro ó cambias el orden por SET ORDER (si trabajas con índices)
thisform.Ordenar()
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