DBGrid Zebrado Linha Selecionada com Outra Cor

26/12/2005

Olá gente!

Peguei esta dica abaixo na WEB e utilizei para zebrar meu DBGrid.

Ok! As linhas alternam beleza entre cores de fundo (verde/branco) e cores de fonte (branca/preta)

O dbgrid é utilizado apenas para mostrar o resultado de uma pesquisa e seleção de uma linha onde vou capturar uma chave ao clicar em Ok ou dar 2 cliques no DBGrid :)

dgRowSelect e dbAlwaysShowSelection estão setados como TRUE.

Utilizo DBExpress -> meus componentes ClientDataSet, DataSetProvider, ClientDataSet, ficam em modulos separados (não estão no form da pesquisa)...

Acontece que ao navegar pelos registros do DBGrid ... Não está aparecendo aquela linha padrão (AZUL) para destacar a linha selecionada.

Hummm... E aí... Tem como Zebrar e Destacar a linha selecionada do DBGrid ao mesmo tempo? Tipo... Ao navegar ... a linha selecionada ficar com o famoso destaque em (AZUL) ou outra cor :) ???

...
If odd(dm_usuario.cds_loc_usuario.RecNo) then
begin
  dbg_usuario.Canvas.Font.Color := clWhite;
  dbg_usuario.Canvas.Brush.Color:= clGreen;
end

else

begin
  dbg_usuario.Canvas.Font.Color := clBlack;
  dbg_usuario.Canvas.Brush.Color:= clWhite;
end;

  dbg_usuario.Canvas.FillRect(Rect);
  dbg_usuario.Canvas.TextOut(Rect.Left + 2,Rect.Top, Column.Field.AsString);
...




Userba

Respostas

27/12/2005

Lehapan

Está função tem que estar dentro do evento DrawColumnCell do DBGrid:

...

if gdSelected in State then
begin
dbg_usuario.Canvas.Font.Color := clHighlightText; //Fundo
dbg_usuario.Canvas.Brush.Color:= clHighlight; //Fonte
end
else
begin
If odd(dm_usuario.cds_loc_usuario.RecNo) then
begin
dbg_usuario.Canvas.Font.Color := clWhite;
dbg_usuario.Canvas.Brush.Color:= clGreen;
end
else
begin
dbg_usuario.Canvas.Font.Color := clBlack;
dbg_usuario.Canvas.Brush.Color:= clWhite;
end;
end;

dbg_usuario.Canvas.FillRect(Rect);
dbg_usuario.Canvas.TextOut(Rect.Left + 2,Rect.Top, Column.Field.AsString);
...

Qualquer coisa avise.


Responder Citar

27/12/2005

Paulo Renato

Cuidado ao utilizar a grid zebrada pois tive problemas quanto ao esquema de cores do windows. Se o usuário tiver um esquema de cores amigável ela vai funcionar bem, mas se o esquema for muito ´enfeitado´ as cores ficam muito escuras e não vai conseguir ver o que está escrito na grid.

Abraços

Paulo


Responder Citar

27/12/2005

Userba

Está função tem que estar dentro do evento DrawColumnCell do DBGrid:... .


Funcionou...
Beleza...
Brigaduuuuuuuuuuu.


Responder Citar