Mudar a Cor das Linhas de Grade do DBGrid

Delphi

16/06/2005

Pessoal,

Alguém saberia como mudar a cor das linhas de grade do DBGrid???

Valeu Galera!!!!!!!!!!!!!!!

Marcelo Ribeiro


Marceloribeiro

Marceloribeiro

Curtidas 0

Respostas

Marceloribeiro

Marceloribeiro

16/06/2005

por favor pessoal... ajuda aí!!!!

eu sei que aqui só tem fera..... pô....


GOSTEI 0
Pro-luck

Pro-luck

16/06/2005

Procure no link Pesquisar que se encontra no topo desta página e tente localizar digitando o seguinte assunto: Colorir o DBGrid.

Aperece aos montes...

Espero q consiga...


GOSTEI 0
Marceloribeiro

Marceloribeiro

16/06/2005

Cara,

O código p/ mudar a cor da linha selecionada e já tenho...

O que eu procuro, é uma forma de deixar aquelas linhas (cinza) da grade do DBGrid tudo preto, ou seja, no lugar do cinza deixar preto, será que é possível???? será que uma coisa tão básica assim o Delphi não permite?

Agradeço a ajuda!!!


GOSTEI 0
Massuda

Massuda

16/06/2005

O que eu procuro, é uma forma de deixar aquelas linhas (cinza) da grade do DBGrid tudo preto, ou seja, no lugar do cinza deixar preto, será que é possível????
Não. Depois de dar uma olhada em como o grid é desenhado, deu para ver que a cor da linha é hard coded... a única coisa que se prevê é no caso da cor do grid ser clSilver (o cinza que você mencionou), a cor da linha é mudada para clGray (cinza escuro).

Neste caso, você teria que tirar as linhas do grid (tire as linhas da propriedade Options do grid) e passar a desenhar as linhas você mesmo no evento OnDrawColumnCell (no caso do TDBGrid) ou OnDrawCell (caso do TStringGrid e do TDrawGrid).


GOSTEI 0
Macario

Macario

16/06/2005

[quote:1377d9361e=´MarceloRibeiro´]O que eu procuro, é uma forma de deixar aquelas linhas (cinza) da grade do DBGrid tudo preto, ou seja, no lugar do cinza deixar preto, será que é possível????
Não. Depois de dar uma olhada em como o grid é desenhado, deu para ver que a cor da linha é hard coded... a única coisa que se prevê é no caso da cor do grid ser clSilver (o cinza que você mencionou), a cor da linha é mudada para clGray (cinza escuro).

Neste caso, você teria que tirar as linhas do grid (tire as linhas da propriedade Options do grid) e passar a desenhar as linhas você mesmo no evento OnDrawColumnCell (no caso do TDBGrid) ou OnDrawCell (caso do TStringGrid e do TDrawGrid).[/quote:1377d9361e]

Tipo seria usando a variavel Rect???

E nesse caso há alguma perca de performance?


GOSTEI 0
Massuda

Massuda

16/06/2005

[quote:6620bc08fd=´Macario o Aspone´]Tipo seria usando a variavel Rect???[/quote:6620bc08fd]Se eu entendi o que você quis dizer, sim. Você desenha um pedaço da grade em cada célula.

[quote:6620bc08fd=´Macario o Aspone´]E nesse caso há alguma perca de performance?[/quote:6620bc08fd]Não a ponto de ser perceptível.


GOSTEI 0
Macario

Macario

16/06/2005

legal. 8)

Neste caso preciso aprender sobre ela ´TRect´.

Tipo alguem pode indicar algum material sobre o assunto?

Grato.


GOSTEI 0
Fx|hand

Fx|hand

16/06/2005

Ficou um pouco complicado... + se vc intender, e conseguir fazer os loopings pra colorir o negociu... fica legal... ^^
eu usei o StringGrid... + se vc usar o DBGrid tbm dah na mesma !!!

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
r: TRect;
begin
{PEGANDO A LOCALIZAÇÃO DA LINHA}
r.Left := StringGrid1.ColWidths[0] + 2;
r.Top := StringGrid1.RowHeights[0];
r.Bottom := StringGrid1.RowHeights[0] * 2;
r.Right := StringGrid1.Width;

//MUDANDO A COR PRA VERMELHO
StringGrid1.Canvas.Brush.Color := clRed;

//PREENCHENDO COM O VERMELHO A LOCALIZAÇÃO DA LINHA INTEIRA
StringGrid1.Canvas.FillRect(r);

//MUDANDO PRA BSCLEAR
StringGrid1.Canvas.Brush.Style := bsClear;

//MUDANDO A COR DA FONTE
StringGrid1.Canvas.Font.Color := clWhite;

//IMPRIMINDO O TEXTO DA CELULA 1,1
//CENTRALIZADO DE CIMA PRA BAIXO
StringGrid1.Canvas.TextOut(r.Left,(r.Top + r.Bottom - 
StringGrid1.Canvas.TextHeight(StringGrid1.Cells[1,1])) div 2,StringGrid1.Cells[1,1]);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
//PREENCHENDO ALGUMAS CELULAS
StringGrid1.Rows[1].Text := ´teste´;
StringGrid1.Cols[1].Text := ´teste´;
StringGrid1.Cells[1,1] := ´teste´;
end;


Byee


GOSTEI 0
Macario

Macario

16/06/2005

Na boa não consegui adaptar o codigo pra dbgrid.

Tipo o tempo ta curto, ultimamente. :roll:


GOSTEI 0
Emrj

Emrj

16/06/2005

:D

Valeu FX|HanD !!!

Me ajudou muito!

fiz somente uma adaptação

[b:269edbc866]
if ( ACol mod 2) > 0 then
begin
sgMapa.Canvas.Brush.Color:=$0053A9FF;
sgMapa.Canvas.Font.Color :=clBlack;
sgMapa.Canvas.FillRect(Rect);

sgMapa.Canvas.TextOut(Rect.Left+2, Rect.Top+10, sgMapa.Cells[Acol,ARow]);

end;[/b:269edbc866]

Desse jeito cada celula fica de uma cor.

Vlw!


GOSTEI 0
POSTAR