Array
(
)

DBGrid Cor Sim cor não

Vagner.oliveira
   - 20 jan 2006

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

1º linha
2º linha
3º linha
4º linha

e assim por diante...


Martins
   - 20 jan 2006

Vagner, faz uma busca aqui no fórum sobre Dbgrid zebrado, vc pode utilizar para essa finalidade.

Boa sorte!!


Rm
   - 21 jan 2006

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;


Sistemald
   - 22 jan 2006

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


Vagner.oliveira
   - 23 jan 2006

Funcionou perfeitamente seu código.
Obrigado


Vagner.oliveira
   - 24 jan 2006


Citação:
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.


Vagner.oliveira
   - 24 jan 2006

Consegui :D graças ao projeto de nosso colaborador sistemald. Valew amigo :wink:

segue o código completo e funcionando beleza
#Código


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:
dgRowSelected - True
dgAwaysShowSelection - True


Aerreira
   - 24 jan 2006

Posso dar uma pequena sugestão...

substitua:

#Código

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

por

#Código
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.