hallo,
habe da einen code der wenn in dem tabellenfeld der string "P1" steht, dann wird
in dieser DBGridzeile die schriftfarbe auf rot gesetzt.
Delphi-Quellcode:
procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
s : string;
begin
// die zelle ist markiert und/oder selektiert
// dann sollen die Standard-Farben verwendet werden (weiß auf navy)
if (gdSelected in State) or (gdFocused in State) then exit;
{ ansonsten soll die Farbe in Abhängigkeit eines Strings der
angezeigten Datenbank geändert werden
Hinweis: die Farben sind hier nur zu Testzwecken ohne Rücksicht
darauf, ob sie zueinander passen, frei gewählt worden}
// Variante 1 zum Einlesen des Wertes aus der Datenbank:
s := uppercase(query1.FieldByName('P').AsString);
// oder
// Variante 2
s := uppercase((dbgrid1.DataSource.DataSet as Tquery).FieldByName('P').AsString);
// oder
// Variante 3
s := uppercase(((Sender as TDBGrid).DataSource.DataSet as Tquery).FieldByName('P').AsString);
// eine Variante reicht natürlich aus !!!
if s = 'P1' then begin
// dbgrid1.Canvas.Brush.Color := clBlue;
dbgrid1.Canvas.Font.Color := $000000DF;
dbgrid1.Canvas.Font.Style:= [fsBold];
end
else if s = 'P2' then begin
// dbgrid1.Canvas.Brush.Color := clRed;
dbgrid1.Canvas.Font.Color := clblack;
end;
// falls weder P1 noch P2, dann bleibt die Zeile wie Standard
dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
jetzt möchte ich aber das mit einen datum abfragen, habe ein tabellfeld als typ "datum"
und jetzt würde ich gerne wenn das abgespeicherte datum in der tabelle gleich oder
kleiner ist als das systemdatum des pc's das die schriftfarbe dieser DBGridzeile auf rot gesetzt wird !
wie geht das ?
mfg vader