Ver Mensaje Individual
  #65  
Antiguo 06-01-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Reputación: 19
Chris Va por buen camino
Mejorando código....

Código Delphi [-]
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
    background_colors: array[0..1] of TColor = (clBtnFace, clWhite);
begin
if Dataset.FieldByName('asiento').Value <> UltimoValor then
    BoolSwitch := (not BoolSwitch);

TDBGrid(Sender).Canvas.Brush.Color := background_colors[BoolSwitch];

// el grupo ya fue pintado?
if Pos(Format('-%s-', [Dataset.FieldByName('asiento').Value]), GrupoImpar) > 0 then
    TDBGrid(Sender).Canvas.Brush.Color := background_colors[0];
   
TDBGrid(Sender).DefaultDrawColumnCell( ... );
UltimoValor := Dataset.FieldByName('asiento').Value;

// guarlar una lista de los grupos impares
if (not BoolSwitch) and (Pos(Format('-%s-', [Dataset.FieldByName('asiento').Value]), GrupoImpar) = 0) then
    GrupoImpar := (GrupoImpar + Format('-%s-', [Dataset.FieldByName('asiento').Value]);
...
end;

Es un gasto de memoria, es cierto. Pero la solución en el código es una simplificación de la solución primera propuesta por delphius.

Aún no funciona? Dinos que esto ya lo tomamos como reto

EDITO: Aclaro que GrupoImpar es una variable global privada
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web

Última edición por Chris fecha: 06-01-2011 a las 23:33:58.
Responder Con Cita