Pesquisei e não encontrei - DBGrid Zebrado com formatação

Delphi

20/07/2005

Galera como todo mundo eu utilizo o código abaixo para zebrar o meu dbgrid, mas o mesmo código não deixa que as máscaras e nem os alinhamentos do dbgrid funcionem. O código joga o texto de todas as colunas para a esquerda, o tamanho da fonte é somente um além de outras coisinhas mais.

If odd(DM.CDSCadCliente.RecNo) then
begin
DBGReltPesquisa.Canvas.Font.Color:= clBlack;
DBGReltPesquisa.Canvas.Brush.Color:= $00DBDBDB;
end
else
begin
DBGReltPesquisa.Canvas.Font.Color:= clBlack;
DBGReltPesquisa.Canvas.Brush.Color:= clWhite;
end;
DBGReltPesquisa.Canvas.FillRect(Rect);
DBGReltPesquisa.Canvas.TextOut(Rect.Left+2,Rect.Top+2,Column.Field.AsString);

Pergunta:

Alguém sabe como zebrar um dbgrid sem que ele perca as suas propriedades de formatação?

Valeu galera. :D


Demetrius

Demetrius

Curtidas 0

Respostas

Arc

Arc

20/07/2005

bom, eu uso um codigo diferente do seu , mas ele da o mesmo erro, ..., pelo menos o alinhamento dos dados eu coloquei direto no object inspector de cada campo da query ....funciona
a fonte nunca tentei


GOSTEI 0
Demetrius

Demetrius

20/07/2005

Topo!!!!!

:D


GOSTEI 0
Idivaldo.mb

Idivaldo.mb

20/07/2005

TENTE ISSO:


If odd(QApontamentos_veiculos.RecNo) then
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= clSkyBlue;
end
else
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= clWhite;
end;

if gdSelected in State then
begin
DBGrid1.Canvas.Font.Color:= clWhite;
DBGrid1.Canvas.Brush.Color:= clNavy;
end;

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

OK?


SUPORTE.HAWKSOFT@TERRA.COM.BR
(016) 8115-8386


GOSTEI 0
Demetrius

Demetrius

20/07/2005

Obrigado amigo,
resolveu 95¬ do meu problema, mas ainda tem uma questão.
Todas as colunas ainda se encontram alinhadas a esquerda.
A linha referente ao alinhamento das colunas é a que está destacada. Já tentei fazer vários testes com mudança de parâmetros mas nenhum resolveu o meu problema.
Se você ou mais alguém tiver uma idéia agradeço muito.

If odd(DM.CDSCadCliente.RecNo) then
begin
DBGReltPesquisa.Canvas.Font.Color:= clBlack;
DBGReltPesquisa.Canvas.Brush.Color:= clSkyBlue;
end
else
begin
DBGReltPesquisa.Canvas.Font.Color:= clBlack;
DBGReltPesquisa.Canvas.Brush.Color:= clWhite;
end;

if gdSelected in State then
begin
DBGReltPesquisa.Canvas.Font.Color:= clWhite;
DBGReltPesquisa.Canvas.Brush.Color:= clNavy;
end;
DBGReltPesquisa.Canvas.FillRect(Rect);
[color=red:0f173f8752] DBGReltPesquisa.Canvas.TextOut([b:0f173f8752]Rect.Left+2[/b:0f173f8752],Rect.Top+2,Column.Field.DisplayText);[/color:0f173f8752]


GOSTEI 0
Demetrius

Demetrius

20/07/2005

Sobe!!!!!!


GOSTEI 0
Massuda

Massuda

20/07/2005

...mas o mesmo código não deixa que as máscaras e nem os alinhamentos do dbgrid funcionem. O código joga o texto de todas as colunas para a esquerda, o tamanho da fonte é somente um além de outras coisinhas mais.
Isso acontece porque o código que você está usando está fazendo o desenho do texto; deixe isso por conta da rotina padrão do Delphi (TDBGrid.DefaultDrawColumnCell), que ela se encarrega dos detalhes de alinhamento e máscara:
// tratador do evento TDBGrid.OnDrawColumnCell
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  Grid: TDBGrid;
  DataSet: TDataSet;
begin
  Grid := Sender as TDBGrid;
  DataSet := Grid.DataSource.DataSet;

  if Odd(DataSet.RecNo) then begin
    Grid.Canvas.Font.Color := clBlack;
    Grid.Canvas.Brush.Color := $00DBDBDB;
  end
  else begin
    Grid.Canvas.Font.Color := clBlack;
    Grid.Canvas.Brush.Color := clWhite;
  end;
  Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;



GOSTEI 0
Demetrius

Demetrius

20/07/2005

Massuda valeu pela dia e pela explicação. Muitas vezes os amigos ajudam e não explicam o que fazer e/ou como fazer. As explicações são muito importantes para nós que estamos começando entendermos a codificação.

Obrigado a todos que ajudaram.


GOSTEI 0
Zap40

Zap40

20/07/2005

///10 pelo objetivo
10 pelo explicação
e mais 10 por ter colocado o codigo legivel


GOSTEI 0
POSTAR