Colorir primeira célula do dbgrid

04/06/2008

0

Bom dia pessoal, gostaria de saber como faço para colorir somente a primeira célula de um dbgrid..

hj faço dessa forma, mas ele colore a linha inteira..

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

    If DM.QSituacaoOcorrenciaCODNIVELURGENCIA.Value =  1 then
       begin
          dbgOcorrencia.Canvas.Font.Color:= clBlack;
          dbgOcorrencia.Canvas.Brush.Color:= $008888FF;
       end
    else If DM.QSituacaoOcorrenciaCODNIVELURGENCIA.Value =  2 then
       begin
          dbgOcorrencia.Canvas.Font.Color:= clBlack;
          dbgOcorrencia.Canvas.Brush.Color:= clYellow;
        end
    else If DM.QSituacaoOcorrenciaCODNIVELURGENCIA.Value =  3 then
       begin
          dbgOcorrencia.Canvas.Font.Color:= clBlack;
          dbgOcorrencia.Canvas.Brush.Color:= $00FFEBD7;
        end;
end;


tentei fazer da seguinte forma, mas ele fica estranho..como se tivesse fazendo um loop...


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

    If DM.QSituacaoOcorrenciaCODNIVELURGENCIA.Value =  1 then
       begin
          dbgOcorrencia.Canvas.Font.Color:= clBlack;
          dbgOcorrencia.Columns[0].Color:= $008888FF;
       end
    else If DM.QSituacaoOcorrenciaCODNIVELURGENCIA.Value =  2 then
       begin
          dbgOcorrencia.Canvas.Font.Color:= clBlack;
          dbgOcorrencia.Columns[0].Color:= clYellow;
        end
    else If DM.QSituacaoOcorrenciaCODNIVELURGENCIA.Value =  3 then
       begin
          dbgOcorrencia.Canvas.Font.Color:= clBlack;
          dbgOcorrencia.Columns[0].Color:= $00FFEBD7;
        end;




alguém teria uma solução melhor para mim???? colorindo a linha inteira fica mto colorido e cansativo para o usuário..


Responder

Posts

10/06/2008

Fabianosales

Você já tentou usar o evento OnDrawDataCell?
O código ficaria assim:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if Field.Name = ´NOME_DO_CAMPO_A_SER_COLORIDO´ then
    case integer(Field.Value) of
      1 : DBGrid1.Canvas.Brush.Color := $008888FF;
      2 : DBGrid1.Canvas.Brush.Color := clYellow;
      3 : DBGrid1.Canvas.Brush.Color := $00FFEBD7;
    end;
  DBGrid1.Canvas.Font.Color := clBlack;
end;



Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar