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; |
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.
-
InfusTec
-
16.190 views
- 7 comentários
- 28 de março de 2015
Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!
Posts Relacionados - Continue Aprendendo
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.
Está utilizando algum Style?
Pois o Style altera por ele mesmo as cores.
Nos demais casos, ao menos nos meus testes, o código funciona muito bem.
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.
Pessoal
Muito obrigado pela atenção.
Consegui fazer funcionar.
Mais uma vez obrigado e parabéns pelo excelente trabalho.
Paulo
Já experimentou o TSMDbgrid? É free:
http://www.scalabium.com/smdbgrid.htm tem as sources dá para estuda-lo e é fantástico.
Acho que não deixa postar o link:
http://www.scalabium.com/smdbgrid.htm
Funciona sim, só precisam ser aprovados os comentários.