DbGrid c/linhas coloridas

15/02/2003

0

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

Responder

Posts

15/02/2003

Carnette

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;


Responder

15/02/2003

Anonymous

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;



Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar