DBGrid Cor Sim cor não
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...
[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
Curtidas 0
Respostas
Martins
20/01/2006
[b:c115c3ea18]Vagner[/b:c115c3ea18], faz uma busca aqui no fórum sobre Dbgrid zebrado, vc pode utilizar para essa finalidade.
Boa sorte!!
Boa sorte!!
GOSTEI 0
Rm
20/01/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;
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;
GOSTEI 0
Sistemald
20/01/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
da uma olhada no meu dbgrid
http://desenvolvedor.donato.inf.br
de uma olhada em downloads
ele tem zebra, autosave da colunas e Checkbox
GOSTEI 0
Vagner.oliveira
20/01/2006
Funcionou perfeitamente seu código.
Obrigado
Obrigado
GOSTEI 0
Vagner.oliveira
20/01/2006
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.
GOSTEI 0
Vagner.oliveira
20/01/2006
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
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]
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]
GOSTEI 0
Aerreira
20/01/2006
Posso dar uma pequena sugestão...
substitua:
por
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.
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.
GOSTEI 0