DBGrid Zebrado Linha Selecionada com Outra Cor

Delphi

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

Userba

Curtidas 0

Respostas

Lehapan

Lehapan

26/12/2005

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.


GOSTEI 0
Paulo Renato

Paulo Renato

26/12/2005

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


GOSTEI 0
Userba

Userba

26/12/2005

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


Funcionou...
Beleza...
Brigaduuuuuuuuuuu.


GOSTEI 0
POSTAR