Ver Mensaje Individual
  #14  
Antiguo 05-01-2011
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 25
Delphius Va camino a la fama
Hola,

Pues a como lo entiendo para hacer lo que buscas deberías leer el campo en cuestión, y compararlo con el anterior leído. En caso de ser diferente, se altera el color y se pinta con ese. En otro caso sigue pintando por el defecto.

Inicialmente se lee el primer registro y se decide el color inicial y se guarda en una variable auxiliar el valor del campo de este registro. Se pinta el primer registro con el color inicial.

En lo sucesivo se va comparando el valor del campo con el de la variable auxiliar y en caso de ser diferente se guarda en variable auxiliar este valor, se altera el color.

Para lograr la alteración entre dos colores yo tendría algo como esto:

type
ColorDoble = array[boolean] of TColor;

De ese modo tendría los dos colores, por ejemplo:

Código Delphi [-]
var
MiColorDoble: TColorDoble;
...
MiColorDoble[true] := clRed;
MiColorDoble[false] := clBlue;

Y de modo que cuando se cumpla:
Código Delphi [-]
ValorCampo := NombreDataSet.FieldbyName('CAMPO').AsInteger;
if ValorCampo <> ValorAux

Provocar un cambio en el color elegido por pintar, Algo como:

Código Delphi [-]
if ValorCampo <> ValorAux
   then Cambiar := NOT Cambiar; // alterna entre true/false
ColorElegido := MiColorDoble[Cambiar];

DBGrid.Canvas.Brush.Color := ColorElegido;
DefaultDrawColorCell(....)

La idea no es ofrecer el código exacto. No tengo Delphi a mano, pero al menos orientar un poco las cosas.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita