Como trocar a cor apenas da primeira linha de um grid

Delphi

23/08/2012

Galera, estou com uma duvida muito tosca...
mas não estou conseguindo achar nada na internet que me ajuda-se..

Eu preciso trocar a cor APENAS da primeira linha de um grid....
já tentei de inúmeras mas ainda não obtive sucesso a minha ultima tentativa foi essa...


procedure TFrmFichaTecnica.GrdiDadosFornProdDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
aux,i : integer;
begin
  aux:=1;
   For i := 1 to QryDadosFornProd.RecordCount - 1  do
    if i = aux then
    begin
      GrdiDadosFornProd.Canvas.Font.Color:= clRed;
      GrdiDadosFornProd.DefaultDrawDataCell(Rect, GrdiDadosFornProd.columns[DataCol].field, State);
    end;
end;

Mas não consegui realizar oque eu queria..
Agradeço desde já a ajuda de todos...

Marcos V. Rossetto
marcos@abacus.inf.br
Marcos Rossetto

Marcos Rossetto

Curtidas 0

Respostas

Marcos Rossetto

Marcos Rossetto

23/08/2012

com esse codigo vc precisa pegar em um sql quando inicia o form e passar a chave principal para a
varialvel aux, com isso os itens que tiver a cheve com o valor vão ser coloridos de vermelho
e os outro serão preto...
Obs.:
\\GrdiDadosFornProd.Canvas.Font.Style := [fsBold] ; esse comando deixa negrito.

procedure TFrmFichaTecnica.GrdiDadosFornProdDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin



If QryDadosFornProdFPDATAENTRADA.AsString = aux then
begin
GrdiDadosFornProd.Canvas.Font.Color:= clRed;
GrdiDadosFornProd.Canvas.Font.Style := [fsBold] ;
GrdiDadosFornProd.DefaultDrawDataCell(Rect, GrdiDadosFornProd.columns[datacol].field, State);
end
else
begin
GrdiDadosFornProd.Canvas.Font.Color:= clBlack;
GrdiDadosFornProd.DefaultDrawDataCell(Rect, GrdiDadosFornProd.columns[datacol].field, State);
end;

end;
GOSTEI 0
Eduardo Silva.

Eduardo Silva.

23/08/2012

Nesse mesmo evento, substitua por:


if TDBGrid(Sender).DataSource.DataSet.RecNo = 1 then
begin
TDBGrid(Sender).Canvas.Font.Color := clRed;
TDBGrid(Sender).Canvas.FillRect(Rect);
TDBGrid(Sender).DefaultDrawDataCell(Rect, Column.Field, State);
end;

Boa Sorte!

Eduardo Belo
GOSTEI 0
Marco Salles

Marco Salles

23/08/2012

Acho qu eo Belo esta correto para aquilo que vc pediu no inicio do seu post

so trocaria o mpetodo DefaultDrawDataCell pelo DefaultDrawColumnCell por motivos de formatação
Alguns campos quando formatados não são exibidos de forma correta utilizando o promeiro método

procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
 dbgrid:TDBGrid;
begin
 dbgrid:= TDBGrid(Sender);
if   dbgrid.DataSource.DataSet.RecNo = 1 then
 begin
dbgrid.Canvas.Font.Color := clRed;
dbgrid.Canvas.Font.Style := [fsBold] ;
 end;
dbgrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
GOSTEI 0
POSTAR