Hallo beisammen,
ich weiß, ich weiß: Dieses Thema wurde bereits mehrfach angesprochen und ich habe auch so ziemlich alle Beiträge des Forums bereits gelesen. Aber: Ich schaffe es einfach nicht!
<p>
Problem: Eine Spalte, die ich zu diesem Zweck manuell als TColumn zu den bereits vorhandenen Query-Datenfeldern im DBGrid hinzugefügt habe, soll farbig dargestellt werden. In der Spalte soll kein Wert angezeigt werden, lediglich die Farbe der nur 5 Pixel breiten Zelle ist relevant.
<p>
Die Farbe ist dabei abhängig vom Inhalt des Integer-Datenbankfeldes 'Status': Also z.B. 2=Gelb, 3=Rot, usw.
<p>
Folgender Code wird verwendet:
<P>
<PRE><CODE>
procedure TfmKunden.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var CellColor: TColor;
begin
case qyKundenStatus.Value of
2: CellColor := clYellow;
3: CellColor := clRed;
end;
DBGrid1.Columns[1].Color := CellColor;
DBGrid1.DefaultDrawColumnCell(Rect, Datacol, Column, State);
end;
</PRE></CODE>
(Columns[1] ist die von mir eingefügte Grid Spalte).
<p>
Das funktioniert im Prinzip auch - es wird nur leider nicht die gewünschte Zelle gefärbt, sondern jeweils die Zelle in der Zeile darunter... Hat also der Kunde Aheimer den Status 3, wird blöderweise beim Kunden Baltmann die Infozelle rot - bei alphabetischer Sortierung des Querys nach Kundennamen, versteht sich.
Und: Ich hätte angenommen, dass der Wert von DefaultDrawing des Grids einen Einfluss auf die oben erwähnte Darstellung haben sollte - hat er aber nicht.
Umgebung: Delphi4 C/S, PostgreSQL unter Linux
Danke für jede Hilfe!
Ralph
ich weiß, ich weiß: Dieses Thema wurde bereits mehrfach angesprochen und ich habe auch so ziemlich alle Beiträge des Forums bereits gelesen. Aber: Ich schaffe es einfach nicht!
<p>
Problem: Eine Spalte, die ich zu diesem Zweck manuell als TColumn zu den bereits vorhandenen Query-Datenfeldern im DBGrid hinzugefügt habe, soll farbig dargestellt werden. In der Spalte soll kein Wert angezeigt werden, lediglich die Farbe der nur 5 Pixel breiten Zelle ist relevant.
<p>
Die Farbe ist dabei abhängig vom Inhalt des Integer-Datenbankfeldes 'Status': Also z.B. 2=Gelb, 3=Rot, usw.
<p>
Folgender Code wird verwendet:
<P>
<PRE><CODE>
procedure TfmKunden.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var CellColor: TColor;
begin
case qyKundenStatus.Value of
2: CellColor := clYellow;
3: CellColor := clRed;
end;
DBGrid1.Columns[1].Color := CellColor;
DBGrid1.DefaultDrawColumnCell(Rect, Datacol, Column, State);
end;
</PRE></CODE>
(Columns[1] ist die von mir eingefügte Grid Spalte).
<p>
Das funktioniert im Prinzip auch - es wird nur leider nicht die gewünschte Zelle gefärbt, sondern jeweils die Zelle in der Zeile darunter... Hat also der Kunde Aheimer den Status 3, wird blöderweise beim Kunden Baltmann die Infozelle rot - bei alphabetischer Sortierung des Querys nach Kundennamen, versteht sich.
Und: Ich hätte angenommen, dass der Wert von DefaultDrawing des Grids einen Einfluss auf die oben erwähnte Darstellung haben sollte - hat er aber nicht.
Umgebung: Delphi4 C/S, PostgreSQL unter Linux
Danke für jede Hilfe!
Ralph
Comment