DBGrid Cor Sim cor não

20/01/2006

Pessoal, gostaria de deixar meu DBgrid com uma linha de cada cor entre 2 cores. Por exemplo, azul e preto.

[b:d5235dfeb4][color=blue:d5235dfeb4]1º linha[/color:d5235dfeb4]
2º linha
[color=blue:d5235dfeb4]3º linha[/color:d5235dfeb4]
4º linha[/b:d5235dfeb4]

e assim por diante...


Vagner.oliveira

Respostas

20/01/2006

Martins

[b:c115c3ea18]Vagner[/b:c115c3ea18], faz uma busca aqui no fórum sobre Dbgrid zebrado, vc pode utilizar para essa finalidade.

Boa sorte!!


Responder Citar

21/01/2006

Rm

Default drawing:false
OnDrawColumnCell.

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, DBTables, Grids, DBGrids, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
DBGrid1: TDBGrid;
Table1: TTable;
DataSource1: TDataSource;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;

implementation
{$R *.DFM}

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 Citar

22/01/2006

Sistemald

OI,

da uma olhada no meu dbgrid

http://desenvolvedor.donato.inf.br

de uma olhada em downloads

ele tem zebra, autosave da colunas e Checkbox


Responder Citar

23/01/2006

Vagner.oliveira

Funcionou perfeitamente seu código.
Obrigado


Responder Citar

24/01/2006

Vagner.oliveira

Funcionou perfeitamente seu código. Obrigado


Só está faltando um coisinha :lol: :lol: :lol:

Como eu faço pra deixar a linha selecionada com outra cor. pois quando passo ele não troca a cor como trocava antes.


Responder Citar

24/01/2006

Vagner.oliveira

Consegui :D graças ao projeto de nosso colaborador [b:b23a44405d]sistemald[/b:b23a44405d]. Valew amigo :wink:

segue o código completo e funcionando beleza
if (gdSelected in State) then // se a célula está selecionada
begin
DBGrid1.Canvas.Font.Color:= clWhite;
DBGrid1.Canvas.Brush.Color:= clBlue;
end else
If odd(Table1.RecNo) then
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= $CCFFFF;
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);


Para ficar TODA a linha selecionada da cor desejada tem que marcar as opções no oprions da DBGrid:
[b:b23a44405d]dgRowSelected - True
dgAwaysShowSelection - True[/b:b23a44405d]


Responder Citar

24/01/2006

Aerreira

Posso dar uma pequena sugestão...

substitua:

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

por

DBGrid1.DefaultDrawDataCell(rect,Column.Field,State);

Vai funcionar melhor, pois com FillRect e TextOut você irá mostrar todos os campos do grid ´AsString´ e perderá formatação original de campos numéricos e monetários. Com DefaultDrawDataCell o campo é apresentado com sua formatação original, seja ela qual for.


Responder Citar