DBGrid Zebrado

Delphi

06/09/2003

Tentei colocar o DBGrid Zebrado, mas não consigo.

Em tempo de projeto, fica com uma unica cor.

Em tempo de execução, fica com o fundo totalmente em branco.

Segue o código para zebrar o DBGrid, no evento DrawColumnCell:

If DBGrid.Canvas.Brush.Color = clCream Then
Begin
DBGrid.Canvas.Brush.Color := clCream;
End
Else
Begin
DBGrid.Canvas.Brush.Color := clSkyBlue;
End;

DBGrid.Canvas.FillRect(Rect);
DBGrid.Canvas.TextOut(Rect.Left + 2, Rect.Top, Column.Field.AsString);


Daaneto

Daaneto

Curtidas 0

Respostas

Koplin

Koplin

06/09/2003

Eu uso isso aqui:

procedure TDBGrid.DrawColumnCell(const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Begin
with canvas do begin
If Brush.Color = clhighlight then Begin
brush.Color := $0045CFF3;
font.Color:=clBlack;
end else
If Odd(DataSource.DataSet.RecNo) Then
Brush.Color:= $00E4E7CD else Brush.Color:= clWhite;
DefaultDrawDataCell(Rect,columns[datacol].field, State);
end; end;


GOSTEI 0
Daaneto

Daaneto

06/09/2003

Colega o codigo que você forneceu apresentou o mesmo efeito do que estava sendo utilizado, ou seja, em tempo de projeto é exibido todas as linhas com uma unica cor e em tempo de execução, todas as linhas ficam com fundo branco.

Arrumei o texto que você enviou da seguinte forma, acho que fica mais legível.

With DBGrid.Canvas do
begin
If Brush.Color = clhighlight then
Begin
Brush.Color := $0045CFF3;
Font.Color:=clBlack;
end
else
Begin
If Odd(DBGrid.DataSource.DataSet.RecNo) Then
Begin
Brush.Color:= $00E4E7CD
End
else
Begin
Brush.Color:= clWhite;
End;
End;

DBGrid.DefaultDrawDataCell(Rect, DBGrid.Columns[DataCol].Field, State);
End;


GOSTEI 0
Koplin

Koplin

06/09/2003

Caro Daaneto:

Peguei o seu código e coloquei no evento DrawColumnCell de uma DBGrid aqui e ajustei a propriedade DefaultDraw para False ( o que eu esqueci de comentar, desculpe). Em tempo de projeto a grid não muda (claro). Mas em tempo de execução ela fica verde e branca com a linha focada laranja.

Se não conseguir, eu tenho um componente baseado neste código. Te mando, se desejar.


GOSTEI 0
Fluka

Fluka

06/09/2003

Se tiver o componente a disposição pode mandar pra mim ?

[u:efbf37a1a1]fseehagen@msn.com[/u:efbf37a1a1] :?:


GOSTEI 0
Ksmarini

Ksmarini

06/09/2003

amigo daaneto
esse realmente é o melhor código pra zebrar um dbgrid que eu já vi
O DBGrid fica ótimo... Testei o código em no delphi 5, 6 e 7 e funciona perfeitamente
valews mesmo.


GOSTEI 0
Marco Salles

Marco Salles

06/09/2003

amigo daaneto esse realmente é o melhor código pra zebrar um dbgrid que eu já vi


O Amigo ksmarini se refere a qual código ???

O Do daaneto Ou O Do koplin ???


GOSTEI 0
Ksmarini

Ksmarini

06/09/2003

tava me referindo ao código do amigo daaneto, muito bom mesmo, antes de encontrar esse código eu tentei fazer um zebrado de várias formas, procurei em vários forums e cheguei até a usar componentes de terceiros e o resultado ainda não era satisfatório pra fazer uma coisa que o dbgrid já fazia automaticamente. Resolveu meu problema


GOSTEI 0
POSTAR