Auf den ersten Blick sieht es so aus als ob es tatsächlich funktionieren müsste, somit könnte der Fehler bei der erfolglosen Umwandlung des Zellinhaltes in eine Zahl zu finden sein.
Glaube ich nicht. Wenn er die letzten Tage des vorigen Monats findet, dann sollte er auch die ersten Tage des letzten Monats finden. Bei den Tagen des aktuellen Monats steht ja das komplette Datum drin, da liefert TryStrToInt ein FALSE zurück. Und an der vorangestellten 0 bei den ersten Tagen des nächsten Monats kanns auch nicht liegen, die machen bei StrToInt keine Schwierigkeiten.
Abgesehen davon bin ich aber kein Freund davon von einer Dateninterpretation (Feldinhalt des Stringgrids) die Darstellung zu interpretieren. Besser wäre es hier einen Adapter zu schreiben der mit den Termindaten gefüllt wird (oder den Zugriff auf diese Objekte kennt) und der sich auch um die Befüllung des Stringgrids und das Event OnDrawCell kümmert. Dann kann man beim Zeichnen direkt auf die Terminobjekte und dessen Daten zurückgreifen und von den echten Daten die Darstellungsart ableiten. Eine zukünftige Erweiterung wie z.B. spezielle Termine besonders einfärben ist dann ein Klacks.
Keine Ahnung, was du dir unter einem Adapter vorstellst. Ich entwickle zum ersten Mal eine Terminverwaltung mit einem selbstgebastelten Kalender und habe noch etliche Schwierigkeiten damit, für alle anfallenden Problemstellungen Lösungen zu finden. Das ist sozusagen mein Prototyp. Wenn ich das Prinzip erstmal richtig kapiert habe, geht's an die Optimierung.
Beim Befüllen des Stringgrids wird erstmal das Stringgrid mit den reinen Monatsdaten gefüllt. Danach wird mittels SELECT die Datenmenge in der Datenbank nach Datum gefiltert (eben nur Termine mit dem Datum des aktuellen Monats).