25/09/2004

Terceira cor em dbgrid zebrado

O código abaixo deixa um dbgrid zebrado.
Gostaria de saber se tem como colocar uma terceira cor. Sendo que essa terceira cor so apareceria na linha em que estivese posicionado.
Tentei colocar True em dgRowSelect mas não funcionou.

Valeu a força!!!

JR.

If odd(data.IBTFun.RecNo) then
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= $00F8E2D6;
end
else
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= clWhite;
end;
DBGrid1.Canvas.FillRect(Rect);
DBGrid1.Canvas.TextOut(Rect.Left+2,Rect.Top,Column.Field.AsString);
end;


Jrjoliv2003

Respostas

25/09/2004

Uildenei

insere o seguinte pedaço de codigo:


//acerta cores da linha selecionada
if dbgrid1.HighlightCell(, , , State) then
begin
Canvas.Font.Color :=clWhite;
Canvas.Brush.Color:=clBlack;
end //acerta cores de campos ordenados


Responder Citar

25/09/2004

Jrjoliv2003

Não deu certo!!!

if dbgrid1.HighlightCell(, , , State) then
begin
Canvas.Font.Color :=clWhite;
Canvas.Brush.Color:=clBlack;

Não reconhece ´HighlightCell´.

JR.


Responder Citar

26/09/2004

Fabio.hc

Tente assim:


If odd(data.IBTFun.RecNo) then 
   begin 
   DBGrid1.Canvas.Font.Color:= clBlack; 
   DBGrid1.Canvas.Brush.Color:= $00F8E2D6; 
   end 
else 
   begin 
   DBGrid1.Canvas.Font.Color:= clBlack; 
   DBGrid1.Canvas.Brush.Color:= clWhite; 
   end; 

if gdSelected in State then
   begin
   DBGrid1.Canvas.Font.Color:= clBlack;
   DBGrid1.Canvas.Brush.Color:= clAqua;
   end;

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



Responder Citar

26/09/2004

Jrjoliv2003

Beleza!!! Resolvido. Coloquei assim:

If odd(data.IBTCon.RecNo) then
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= $00F8E2D6;
end
else
begin
DBGrid1.Canvas.Font.Color:= clBlack;
DBGrid1.Canvas.Brush.Color:= clWhite;
end;

if gdSelected in State then
begin
DBGrid1.Canvas.Font.Color:= clWhite;
DBGrid1.Canvas.Font.Style:=[fsBold];
DBGrid1.Canvas.Brush.Color:= $00DF5400;
end;

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


Valeu a força!!!

Eu postei uma mensagem sobre Ficha de chamada em QuickReport. Se puder ajudar agradeço, estou penando para fazer...

JR.


Responder Citar

26/09/2004

Uildenei

bom, pessoal!

eu fiz uma modificação em um dbgrid de acordo com o que eu precisava entao fiz rotinas como: ordenação, mudanca de cores de coluna de acordo com a ordem, zebra, configuração de colunas através de dicionario de dados, etc ...


por isso o HighLightCell nao aparece na aplicação normal pq ele eh um metodo protegido da classe.

Uildenei.


Responder Citar