Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Einzeile Zelle einfärben


cherry - Mi 26.04.06 15:20
Titel: Einzeile Zelle einfärben
Ok folgendes. Einfärben einer einzelnen DBGrid Zeile ist kein Problem:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TFrameSearchBetrieb.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
 Feld: TField;
begin
  If (Datamodule1.ADOQuery16_SearchBetriebbetr_closed.AsBoolean = true) then
   DbGrid1.Canvas.Font.Color := clred;
  DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;


Aber wie Färbe ich eine einzelne Zelle anders an???
Oder noch besser, wie füge ich ein kleines Bild in eine Zelle??

Jetzt Staunt ihr was?


Martin1966 - Mi 26.04.06 17:31
Titel: Re: Einzeile Zelle einfärben
user profile iconcherry hat folgendes geschrieben:
Aber wie Färbe ich eine einzelne Zelle anders an???

Erweitere einfach Deine IF Abfrage und benutze dazu die Variable Column.

Lg Martin


cherry - Mi 26.04.06 17:35

wiso die IF Abfrage erweitern?! verse ich jetzt nicht.
Ich will einfach genau diese Zeile(n) enfärben, das ist schon korrekt,
nur eben nicht die ganze Zeile sondern nur eine einzelne ZELLE!

Kannst du mir noch ein wenig mehr auf die Sprünge helfen?


Martin1966 - Mi 26.04.06 17:38

user profile iconcherry hat folgendes geschrieben:
Ich will einfach genau diese Zeile(n) enfärben, das ist schon korrekt,

user profile iconcherry hat folgendes geschrieben:
nur eben nicht die ganze Zeile sondern nur eine einzelne ZELLE!

Irgendwie passen diese beiden Aussagen nicht so ganz, oder? ;-)

Möchtest du jetzt eine komplette Zeile (also einen kompletten Datensatz) einfärben oder nur bestimmte Zellen innerhalb einer/mehreren Zeile(n)?


cherry - Mi 26.04.06 17:42

Also ich möchte von jenen Datensätzen die bei einem bestimmten Attribut den Wert true zurückgeben
nur eine einzelne Zelle einfärben. Also nicht die ganze Zeile.
Weisst du wie das geht?


Martin1966 - Mi 26.04.06 17:47

So wie ich es oben geschrieben habe. ;-) Du musst die If Anweisung erweitern.


Delphi-Quelltext
1:
2:
3:
4:
5:
If (Datamodule1.ADOQuery16_SearchBetriebbetr_closed.AsBoolean = true) 
  and (Column = ???? {hier die richtige Spalte einsetzen} ) then
   DbGrid1.Canvas.Font.Color := clred;

DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);


cherry - Mi 26.04.06 17:51

Eben, das mit der If Abfrage hab ich nicht mit Anhieb geschnallt..
Leuchtet aber ein.. Vielen Dank!

Habs zwar noch nicht getestet, aber ich hab vertrauen in dich... :wink: