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?
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