DbGrig Alternar cor de determinados registros

Delphi

19/03/2010

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

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

19/03/2010

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.
GOSTEI 0
Pjrm1470

Pjrm1470

19/03/2010

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.
GOSTEI 0
Thiago Santana

Thiago Santana

19/03/2010

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!
GOSTEI 0
POSTAR