Toll, ich fürchte ich bin mal wieder auf einen Fehler in der
VCL gestoßen.
Die Fonts und andere Dinge werden nicht entsprechend recreatet (in D2006, D2009 und D2010 ... D7 konnte ich jetzt noch nicht testen)
wenn ich statt
Sender.Canvas.Font.Color := clGrayText;
direkt
SetTextColor(Sender.Canvas.Handle, ColorToRGB(clGrayText));
verwende, dann geht das Umfärben.
[edit]
Jetzt hatte ich schon vieles auf die
WinAPI umgestellt
und dann bin ich zufällig auf eine "bessere" Lösung gestoßen.
Ich rufe jetzt einfach ein
Sender.Canvas.Refresh;
auf, bevor ich Farbe oder Style ändere.
Somit werden die Pen-, Brush-, und Color-Handles via Canvas.DeselectHandles freigegeben
und vor dem Zeichnen wieder mit den aktuellen Daten über Canvas.RequiredState neu erstellt.