Zitat:
Vorweg mein half-Workaround lautet: "if (DataCol > 12) then Monatswechsel:=false;" Das zeichnet mal lange Striche, wenigstens bis 12.
Die 12 besagt doch, dass nach 12 Spalten ein Monatswechsel nicht mehr gegeben ist. Ist das denn so gewünscht? Soll der Monatswechsel nicht beim Wechsel des Monats zwischen zwei Zeilen erfolgen?
In DrawColumnCell stehen Dir nur die Werte aus der aktuellen Zeile der Datenmenge zur Verfügung, von daher ist es nicht möglich, nur mit Werten aus dieser Zeile innerhalb der Prozedure zu entscheiden, ob eine Monatswechsel vorliegt oder nicht. Dazu benötigst Du eine globale Variabel / Attribut im Formular, in denen Du die Info zum Monat der vorherigen Zeile vorhältst.
Die Reihenfolge der Spalten in der Datenmenge und ggfls. Unterschiede in der Reihenfolge im DBGrid, sollten da eigentlich eher keine Auswirkungen haben.
Über
Column.Field.Calculated
kannst Du abfragen, ob es sich bei der gerade zu zeichnenden Zelle um eine "kalkulierte" Zelle oder eben eine "normale" handelt.
Im Zweifel: Poste bitte Deine vollständige Prozedur DBGrid_TraDrawColumnCell, ansonsten wird das in eine für alle Beteiligten furchtbare Raterei ausarten. Die Abhängigkeiten sind zu vielfältig, um sie mit wenigen Worten beschreiben zu können.