Fórum DbGrig Alternar cor de determinados registros #130627

19/03/2010

0

Bom dia!
Gostaria de saber como posso fazer para que na minha DBGrid a linha que contenha um determinado valor
receba uma cor diferente!
Exemplo tenho em minha tabela um campo C_DESATIVADO do tipo integer gostaria que quando algum registro
que no campo C_DESATIVADO retornasse 1 esta linha da minha DBGRig fosse de outra cor!
Alguém pode mim ajudar? 
Thiago Santana

Thiago Santana

Responder

Posts

19/03/2010

Wilson Junior

Coloque o código abaixo no envento OnDrawColumnCelldo seu DBGrid

begin
  if  DBGrid.DataSource.DataSet.FieldByName('C_DESATIVADO').AsInteger = 1 then
    begin
      DBGrid.Canvas.FillRect( Rect );
      
      if  gdSelected in State then
        begin
          DBGrid.Canvas.Font.Color  := clWhite;
          DBGrid.Canvas.Brush.Color := clNavy;
        end
      else
        begin
          DBGrid.Canvas.Font.Color := clBlack;
          DBGrid.Canvas.Brush.Color :=  clBlue;
        end
      ;
      
      DBGrid.DefaultDrawColumnCell( Rect, DataCol, Column, State );
    end
  ;
end;


Espero ter colaborado.
Responder

Gostei + 0

19/03/2010

Pjrm1470

Alterando cor de linha de um DBGrid Coloque a propriedade defaultdrawdata do dbgrid em FALSE
No evento onDrawColumnCell do seu grid coloque o seguinte:

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  If table1PRAZO.Value > DATE then // condição
    Dbgrid1.Canvas.Font.Color:= clFuchsia; // coloque aqui a cor desejada
  Dbgrid1.DefaultDrawDataCell(Rect, dbgrid1.columns[datacol].field, State);
end;

Fonte: DTDelphi 2.8
Espero que ajude, nem testei. rsrs. veja e me diga se funfa.
aguardo.

pjrm1470.
Responder

Gostei + 0

19/03/2010

Thiago Santana

Amigos vlw pela ajuda mas tive que mudar o componente para RxDbGrid.... Utilizei o seguinte código:   procedure TFrmGridOperadores.RxDBGrid1GetCellParams(Sender: TObject;
  Field: TField; AFont: TFont; var Background: TColor; Highlight: Boolean);
begin
  if (Sender as TJvDBGrid ).DataSource.DataSet.FieldByName('C_Desativado').AsInteger = 1 then begin
     AFont.Color := clRed;
     Background  := clWhite;
     DBEdit5.Color := clbtnFace;
     DBEdit1.Color := clbtnface;
     Edit1.Color   := clbtnFace;
  end;
Com este código ficou do jeito que precisava!
Valeu pela ajuda!
Responder

Gostei + 0

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

Aceitar