DBGrid - Zeilen färben

Rund um die LCL und andere Komponenten
Antworten
_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

DBGrid - Zeilen färben

Beitrag von _ny »

Hallo,

so siehts aus, wenn ich in Delphi die Zeilen eines TDBGrid nach diversen Kriterien zur Laufzeit einfärbe:
procedure Tf_firmendatei.gr_firmendaten1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if ( ( ( Sender As TDBGrid ).DataSource.DataSet.RecNo mod 2 ) = 0 ) then
( Sender As TDBGrid ).Canvas.Brush.Color := u_Main.col_GridRow
else
(Sender As TDBGrid).Canvas.Brush.Color := clWhite;

if (gdSelected in State) then
begin
with (Sender As TDBGrid).Canvas do
begin
Brush.Color := u_Main.col_GridSelectedRow;
Font.Color := u_Main.col_GridSelectedFont;
end; // with
end; // begin

if qFirmendt.FieldByName('barzahl').AsString = 'X' then
( Sender As TDBGrid ).Canvas.Brush.Color := col_GridWarnung
else if qFirmendt.FieldByName('barzahl').AsString = 'Y' then
( Sender As TDBGrid ).Canvas.Brush.Color := col_GridWarnung
else if qFirmendt.FieldByName('archiv').AsString = '1' then
( Sender As TDBGrid ).Canvas.Brush.Color := col_GridAngebot;

(Sender As TDBGrid).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Wenn ich das gleiche auch in Lazarus versuche, passiert aber garnicht... gibts die Möglichkeit noch nicht unter Lazarus oder mach ich was falsch?

Danke!

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Beitrag von slai »

Hab das auch mal vor einer weile gebraucht und bei mir funktionierts beim drawcolumncell

Code: Alles auswählen

procedure TFrmMain.DBGKundenDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  if (gdSelected in State) or (gdFocused in State) then begin
      TDBGrid(Sender).Canvas.Brush.Color:=clNavy;
      TDBGrid(Sender).Canvas.Font.Color:=clWindow;
  end else begin
    if DBDataMod.ZTblAdressstamm.FieldByName('BOLPROSPECT').AsInteger = 1 then begin
      TDBGrid(Sender).Canvas.Brush.Color:=clGradientActiveCaption;
    end else begin
      TDBGrid(Sender).Canvas.Brush.Color:=clWindow;
    end;
  end;
  TDBGrid(Sender).Canvas.FillRect(Rect);
  TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

_ny
Beiträge: 40
Registriert: Do 18. Okt 2007, 13:40

Beitrag von _ny »

funktioniert wunderbar, habs noch an meine "ungerade Färbung" angepasst - Vielen Dank!

Antworten