Cor DBGrig

20/01/2006

Olá a todos ....estou com querendo colocar cor no dbgrid, ou seja conforme a variavel do dataset for pendente fica uma cor no grid ou se for agendada fica outra.
Estou usando o codigo abaixo porem ele pinta todos os campos com as mesmas cores.....
Alguem tem alguma luz para me dar!!!!

procedure TfrmInfC.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if dm.cdProntAP_Status.AsString = ´AGENDADA´ then
begin
DBGrid1.Canvas.Font.Color := clRed;
DBGrid1.Canvas.Brush.Color := clInfoBk;
end
else
begin
DBGrid1.Canvas.Font.Color := clGreen;
DBGrid1.Canvas.Brush.Color := clInfoBk;
end;

DBGrid1.DefaultDrawColumnCell(Rect, 0,Column, state);
end;


Nasguone

Respostas

20/01/2006

Massuda

Do jeito que você fez, deve estar ficando a linha toda com uma cor ou a outra.

Para fazer com que apenas um determinada coluna (imagino que seja a do campo cdProntAP_Status faça...
procedure TfrmInfC.DBGrid1DrawColumnCell(...
begin 

  if Column.Field.FieldName = dm.cdProntAP_Status.FieldName then begin

    if dm.cdProntAP_Status.AsString = ´AGENDADA´ then begin 
      DBGrid1.Canvas.Font.Color := clRed; 
      DBGrid1.Canvas.Brush.Color := clInfoBk; 
    end 
    else begin 
      DBGrid1.Canvas.Font.Color := clGreen; 
      DBGrid1.Canvas.Brush.Color := clInfoBk; 
    end;
  end;

  DBGrid1.DefaultDrawColumnCell(Rect, 0,Column, state); 
end;



Responder Citar