DBGrid Zebrado
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);
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
Curtidas 0
Respostas
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;
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
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;
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
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.
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
06/09/2003
Se tiver o componente a disposição pode mandar pra mim ?
[u:efbf37a1a1]fseehagen@msn.com[/u:efbf37a1a1] :?:
[u:efbf37a1a1]fseehagen@msn.com[/u:efbf37a1a1] :?:
GOSTEI 0
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.
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
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
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