![]() |
DevExpress TcxGrid Zeilen einfärben
Hallo zusammen,
seit einiger Zeit kämpfe ich mit DevExpress VCL! Super Tools! Super Möglichkeiten! Super schwer (für mich)! Ich habe ein TcxGrid, das ich über den DataController mit einer DataSource verbunden habe. Da ich persistente Felder in der Query habe, hab ich die auf dem Weg eingebunden und die Felder auch bereist im Aussehen (Breite, Ausrichtung) angepasst. Alles gut. Ein Tipp zum Einfärben von Zeilen im DevExpress Forum war, wie bei einem Delphi Grid über das Neuzeichnen (OnDrawDataCelll) die Farbe hinzuzufügen. Aber das Event find ich nicht. Wie kann ich die Zeilen einfärben? Zum einen möchte die guten alten Leselinien (grün/hellgrün) im Grid darstellen und in der Folge dann auch mal einzelne Zeilen werteabhängig einfärben. Hat jemand eine Info? Danke! Edit: Kleine Korrekturen |
AW: DevExpress TcxGrid Zeilen einfärben
das Event nennt sich OnCustomDrawCell
Du kannst aber auch das Event OnGetContentStyle nehmen. Dort kann man einer Zelle einfach Styles zuweisen. Die Styles kannst Du vorher im Designer erstellen oder du fügst welche per code ein |
AW: DevExpress TcxGrid Zeilen einfärben
ggf. könnte auch
![]() |
AW: DevExpress TcxGrid Zeilen einfärben
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Early Bird,
ich habs gefunden! Habe mal die Position angehängt. Und probiere das heute oder morgen aus! Hallo Juergen, hab mir das Sample heruntergeladen und schaue mir auch das morgen an! Danke! |
AW: DevExpress TcxGrid Zeilen einfärben
Wir hatten/haben auch ziemlich oft OnCustomDrawCell implementiert.
Dann auch teilweise in dynamischen SQLs gewisse Formatierungsspalten, welche im OnCustomDrawCell abgerufen wurden. Das hatte ich dann mal in eine zentrale Komponente verfrachtet und verallgemeinter, welche inzwischen direkt im DBGridView eingebaut ist. Das mit den Conditional-Formatting-Rules klingt allerdings nett und es lässt sich bestimmt Vieles darauf umstellen. Allerdings kommt es bei uns auch auf die Reihenfolge drauf an. Die erste Spalte mit einem Wert hat vorrang. ..., Yellow=False, Red=True, Green=True -> Zeile ist rot ..., Yellow=False, Green=True, Red=True -> Zeile ist grün Boolean-Spalten: für Red, Green, Blue, Yellow (Hintergrund), TextGreen (Text), Bold, Italic usw. Dann noch eine Color-Spalte, die einen Farbwert angeben kann (RGB mit Integer/TColor oder RGB/Name als String) Und noch eine generelle Format-Spalte, wo man mehrere "Formate" in einem String angeben kann. Das gilt so für die ganze Zeile und nochmal mit Feldname_Format (z.B. name_red) für eine bestimmte Spalte/Zelle. |
AW: DevExpress TcxGrid Zeilen einfärben
Zitat:
Bisher hatte ich farbliche Anpassungen bei bestimmten Bedingungen auch immer über Styles umgesetzt, so wie es EarlyBird in Post #2 beschrieben hat. |
AW: DevExpress TcxGrid Zeilen einfärben
Ich würde auch OnGetContentStyle bevorzugen, ist nochmal deutlich performanter als OnCustomDrawCell.
|
AW: DevExpress TcxGrid Zeilen einfärben
Hallo und vielen Dank für die Tipps.
Wenn man mit einer "manuellen" Einstellung arbeiten will, kann man das so machen:
Delphi-Quellcode:
Das funktioniert immer dann gut, wenn Skins und Styles nicht eingesetzt werden.
procedure TfrmMain.cxGrid1DBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); {----------------------------------------------------------------------------------------------------------------------- Farbeinstellungen im DevExpress TcxGrid sind Spalten und Zeilen aktiv, wird die letzte Einstellung verwendet -----------------------------------------------------------------------------------------------------------------------} var clBkHell : TColor; clTxHell : Tcolor; clBkDunkel : TColor; clTxDunkel : TColor; clBkCursor : TColor; clTxCursor : TColor; begin clBkHell := clWebCornSilk; clTxHell := clBlack; clBkDunkel := clWebWheat; clTxDunkel := clBlack; clBkCursor := clNavy; clTxCursor := clWhite; // Spalten { with AViewInfo.GridRecord do begin if Odd(AViewInfo.Item.ID) then begin// bei ungerader Spaltenzahl ACanvas.FillRect(AViewInfo.Bounds, clBkDunkel); // RootLookAndFeel.Painter.DefaultContentOddColor ); ACanvas.Font.Color := clTxDunkel; end else begin ACanvas.FillRect(AViewInfo.Bounds, clBkHell); // RootLookAndFeel.Painter.DefaultContentEvenColor ); ACanvas.Font.Color := clTxHell; end; end; } // Zeilen if Odd(AViewInfo.GridRecord.RecordIndex) then begin ACanvas.FillRect(AViewInfo.Bounds, clBkDunkel); // RootLookAndFeel.Painter.DefaultContentOddColor ); ACanvas.Font.Color := clTxDunkel; end else begin ACanvas.FillRect(AViewInfo.Bounds, clBkHell); // RootLookAndFeel.Painter.DefaultContentEvenColor ); ACanvas.Font.Color := clTxHell; end; // Cursor Zeile if AViewInfo.Selected then begin ACanvas.FillRect(AViewInfo.Bounds, clBkCursor); // RootLookAndFeel.Painter.DefaultContentOddColor ); ACanvas.Font.Color := clTxCursor; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz