Cita:
Empezado por Chris
[..]
if Dataset.FieldByName('asiento').Value <> UltimoValor then
BoolSwitch := (not BoolSwitch);
|
Creo que se está llegando a la conclusión de que esa parte es la que no funciona en este sistema, no se puede comparar con el valor del "último valor" porque puede ser cualquier registro, por ejemplo cuando ha llegado al último registro y ahora se posiciona en el primero, los colores pueden ser iguales, o no, depende de si el número de "asientos" es par o impar.
O sea, pintarlo, lo pinta perfecto, tanto ese método como todos los demás que se han sugerido, pero en cuanto empiezas a moverte por el grid arriba y abajo, con teclas o con el ratón, yendo al primero o al último con ctrl-inicio y ctrl-fin, página arriba y abajo, etc. siempre acaba descontrolando los colores por lo dicho anteriormente, el "anterior" no tiene por qué ser el que está "antes" en el dbgrid.
Entonces las únicas soluciones posibles son las que sacan el color del propio registro, independientemente de lo que tengan los otros registros anteriores o posteriores.
Ya sea mediante procedimiento almacenado, tabla en memoria, etc.
Bueno, esto que comento es lo que me parece según lo visto, puedo estar totalmente equivocado y ahora alguno expone un código que consigue el resultado esperado.