DbGrig Alternar cor de determinados registros
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?
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
Curtidas 0
Respostas
Wilson Junior
19/03/2010
Coloque o código abaixo no envento OnDrawColumnCelldo seu DBGrid
Espero ter colaborado.
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
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.
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
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!
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