DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
voltar

PARA QUEM GOSTA DE DELPHI

Como deixar um DBGrid zebrado ou colorido?

Muitas vezes precisamos facilitar a visualização dos dados para o
usuário, geralmente com listas com muitas colunas.
Um modo de ajudar o usuário é ir alternando as cores entre as linhas
da lista, popularmente conhecido como “Deixar a lista zebrada”.

Diante desta necessidade, foi formulado um código generico para poder
ser utilizado em qualquer Grid.

No evendo OnDrawColumnCell do seu DBGrid, deixe conforme o exemplo abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if not (gdSelected in State) then
  begin
    if Odd((Sender as TDBGrid).DataSource.DataSet.RecNo) then
      (Sender as TDBGrid).Canvas.Brush.Color:= clWhite
    else
      (Sender as TDBGrid).Canvas.Brush.Color:= $00F1F2F3; // leve cinza
 
    // Aplicando prto para a cor da fonte
    (Sender as TDBGrid).Canvas.Font.Color:= clBlack;
 
    (Sender as TDBGrid).Canvas.FillRect(Rect);
    (Sender as TDBGrid).Canvas.TextOut(Rect.Left + 2, Rect.Top,
    Column.Field.DisplayText);
  end;
end;

Se preferir, você pode alterar o código para deixar as cores de sua
preferencia.

Dúvidas ou sugestões deixe nos comentários do post.

Facebook Comments Box
  • InfusTec
  • 16.221 views
  • 7 comentários
  • 28 de março de 2015

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

7 respostas para “Como deixar um DBGrid zebrado ou colorido?”

  1. Paulo Do Prado Borba disse:

    Boa noite
    Usei o código genérico e o dbgrid não ficou zebgrado.
    Interessante que também já tinha usado outros códigos de outros sites e também não funcionou.
    Uso Delphi XE6, Firebird 2.5 e Firedac.
    Se puderem me ajudar agradeço.

  2. Paulo Do Prado Borba disse:

    Obrigado pela resposta.

    Não estou usando nenhum Style.
    Depois de muitos testes, troquei o FIREDAC pelo ZEOS, para conexão com o BD (Uso o Firebird 2.5) e funcionou.

    Não entendo porque não funciona com o FIREDAC.

  3. Paulo Do Prado Borba disse:

    Pessoal
    Muito obrigado pela atenção.

    Consegui fazer funcionar.

    Mais uma vez obrigado e parabéns pelo excelente trabalho.

    Paulo

  4. mariodosreis disse:

    Já experimentou o TSMDbgrid? É free:
    http://www.scalabium.com/smdbgrid.htm tem as sources dá para estuda-lo e é fantástico.

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados