Buscar

Como criar uma grid zebrada

Código

Primeiramente vou descrever um problema que encontrei, ao desenvolver este procedimento.

Para que tudo ocorra conforme programado, o DBGrid náo pode ter nenhuma coluna (Columns) definidor no grid. As configurações do grid deve ser feito diretamento no ClientDataSet através das propriedades dos fields (DisplayLabel e DisplayWidth) onde influenciará no label exibido na grid e no tamanho do campo.

Agora vamos ao assunto desta dica.

1º - Crie o procedimento conforme mostrado a baixo.

procedure GridZebrada(cds: TClientDataSet; Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);

procedure TTelaPrincipalF.GridZebrada(cds: TClientDataSet;
  Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
begin
  if odd(cds.RecNo) then
    TDBGrid(Sender).Canvas.Brush.Color := $00B9FFFF
  else
    TDbGrid(Sender).Canvas.Brush.Color:= clCream;

    TDbGrid(Sender).Canvas.font.Color:= clBlack;

  if gdSelected in State then
    with (Sender as TDBGrid).Canvas do
    begin
      Brush.Color := $004080FF;
      FillRect(Rect);
      Font.Style := [fsbold]
    end;

  TDbGrid(Sender).DefaultDrawDataCell(Rect, Field, State);
end;




2º - Para utilizar este procedimento é preciso programar o mesmo no evento DrawDataCell do grid desejado.

Onde ficará assim:

procedure TTelaPrincipalF.DBGrid1DrawDataCell(Sender: TObject;
  const Rect: TRect; Field: TField; State: TGridDrawState);
begin
  GridZebrada(cdsAplicativo, Sender, Rect, Field, State);
end;




Vlw galera.
Ta ai a dica

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Forms
Adicionada dia: 22/01/10
Por: Felype De Carvalho Prado
Visualizada: 7774 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009