DbGrid c/linhas coloridas

Delphi

15/02/2003

Como se faz um dbgrid ficar com as linhas coloridas, estilo zebrado, ou seja, uma linha cinza, uma branca, depois cinza, branco e assim por diante...

Obrigado.


Anonymous

Anonymous

Curtidas 0

Respostas

Carnette

Carnette

15/02/2003

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If odd(Table1.RecNo) then
begin
DBGrid1.Canvas.Font.Color:= clWhite;
DBGrid1.Canvas.Brush.Color:= clGreen;
end
else
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= clWhite;
end;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
end;


GOSTEI 0
Anonymous

Anonymous

15/02/2003

Esta rotina é perfeita....mas tem um pequeno probleminha.

Se você estiver usando Interbase + BDE , o Recno sempre é igual a zero. Não testei com IBX ou dbExpress.

A solução é pegar um componente alternativo ou desenvolver. Tem um componente brazuca meio velhinho que quebra o galho : ZebraGrid.



procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin If odd(Table1.RecNo) then begin DBGrid1.Canvas.Font.Color:= clWhite; DBGrid1.Canvas.Brush.Color:= clGreen; end else begin DBGrid1.Canvas.Font.Color:= clBlack; DBGrid1.Canvas.Brush.Color:= clWhite; end; DBGrid1.Canvas.FillRect(Rect); DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString); end;



GOSTEI 0
POSTAR