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.