Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid1DrawColumnCell <> Datumabfrage ? (https://www.delphipraxis.net/68315-dbgrid1drawcolumncell-datumabfrage.html)

Vader 27. Apr 2006 19:08

Datenbank: Paradox • Version: 7 • Zugriff über: TQuery

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

mkinzler 27. Apr 2006 19:12

Re: DBGrid1DrawColumnCell <> Datumabfrage ?
 
Das aktuelle datum erhälst du mit der Funktion
Delphi-Quellcode:
Date();
ohne Parameter.

Vader 27. Apr 2006 19:39

Re: DBGrid1DrawColumnCell <> Datumabfrage ?
 
hallo,

aber wie muß ich den code umschreiben :
Delphi-Quellcode:
s := uppercase(query1.FieldByName('P').AsString);
if s = 'P1' then begin
    dbgrid1.Canvas.Font.Color := $000000DF;
 else if s = 'P2' then begin
    dbgrid1.Canvas.Font.Color := clblack;
  end;
  // falls weder P1 noch P2, dann bleibt die Zeile wie Standard
  dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
hab keine ahnung ???
mfg vader

mkinzler 27. Apr 2006 19:47

Re: DBGrid1DrawColumnCell <> Datumabfrage ?
 
Delphi-Quellcode:
if query1.FieldByName('Datum').Value <= Date() then begin
    dbgrid1.Canvas.Font.Color := $000000DF;
else if s = 'P2' then begin
    dbgrid1.Canvas.Font.Color := clblack;
  end;
  // falls weder P1 noch P2, dann bleibt die Zeile wie Standard
  dbgrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Vader 27. Apr 2006 20:06

Re: DBGrid1DrawColumnCell <> Datumabfrage ?
 
herzlichen dank !
mfg vader


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz