Entwickler-Ecke
Datenbanken - Einfärben einer Zelle in einem DBGrid
wschrabi - Mi 13.07.11 21:11
Titel: Einfärben einer Zelle in einem DBGrid
Hi,
also alles was ich gefunden habe bzgl meiner Frage ist immer das Einfärben einer ganzen Zeile in einem DBGrid. Ich möchte aber nur eine Zelle rot färben, wenn der darin enthaltene INtegerwert negativ ist. Dass das mit OnDrawColumnCell als Event geht, weiss ich bereits. DOch wie geht es weiter? Kann mir da jemand ein einfache Bsp posten? DANKE
haentschman - Mi 13.07.11 21:20
... nur weil heute Freitag ist :lol:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| Zahl: Integer; . . . if Column.Fieldname = 'DeinFeldname' then begin if Zahl < 0 then begin DBGrid.Canvas.brush.color:=clRed; DBGrid.Canvas.font.color:=clRed; DBGrid.DefaultDrawColumnCell(rect, 1, column,state); end else begin DBGrid.Canvas.brush.color:=clWhite; DBGrid.Canvas.font.color:=clWhite; DBGrid.defaultdrawcolumnCell(rect, 1, column,state); end; end; |
PS: Mal sehen ob du den kleinen eingebauten Fehler (ist eigentlich keiner wenn man es so will) selbst korrigieren kannst.
:zwinker:
wschrabi - Mi 13.07.11 21:47
Danke DIr, danke deiner hilfe hab ichs jetzt hinbekommen
Ja den bug hab ich. 1) DBGrid1 und 2) Font and brush color die selbe, da sieht man nix.
Super danke dir
jasocul - Do 14.07.11 08:00
Vielleicht solltest du noch jeweils den Status gdSelected (in Abhängigkeit, ob das Grid den Focus hat), bzw. dgAlwaysShowSelection prüfen und die Farben dann invertierten.
Das kann dann etwa so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| if FGrid.Focused then begin if gdSelected in state then begin FGrid.Canvas.Font.Color := Element.Farbe; end else begin FGrid.Canvas.Brush.Color := Element.Farbe; end; end else begin if dgAlwaysShowSelection in FGrid.Options then begin if gdSelected in state then begin FGrid.Canvas.Font.Color := Element.Farbe; end else begin FGrid.Canvas.Brush.Color := Element.Farbe; end; end else begin FGrid.Canvas.Brush.Color := Element.Farbe; end; end; |
Ist ein Code-Fragment aus einer meiner eigenen Komponenten, aber da die Bezeichnungen sprechend sind, wird das wohl kein Porblem sein.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!