hi,
komm lass gut sein. Ich dank dir für deine Mühe. ( der neueste Versuch klappt bei mir auch nicht )
Ich geh jetzt meinen Weg über Invalidate und ich bin überzeugt das geht.
Ich will dir nicht zu nahe treten, aber ich glaube, dass, das nur Zufall ist, dass das bei dir funktioniert.
Meine Kollegen sind jetzt an dem Problem dran:
Winnt, Win2000,
Delphi 2,5,6,7 überall funktionierts so nicht.
Und das liegt einfach nur daran, dass:
setenabled ( inherited ) sich selbst aufruft, dadurch wird invalidate aufgerufen und dann ist alles vorbei.
Invalidate setzt die Farbe auf grau. Es nützt nichts dann die Farben zu ändern. Alle die anderen Versuche gehen an dem Problem vorbei und beheben es nicht.
Es ist nötig Invalidate oder eine Routine, die durch diese aufgerufen wird zu überschreiben.
Ein Szenario wäre ( warum das bei dir geht ):
setenabled --> inherited --> Botschalt wird abgeschickt und damit vergeht soviel Zeit ( bei dir ) dass if enabled... abgearbeitet werden kann, bevor die message bearbeitet ist.
inherited;
if enabled then
Font.Color := clWindowText
else
Font.Color := clred;
Also, sei mir nicht böse für die Antwort, aber es lohnt sich nicht noch mehr Energie da reínzustecken.
Was mich noch interressieren würde, was für ein Betriebssystem benutzt du?
Nebenbei: das ist nicht das erste Mal dass ich solches Verhalten auf einem Rechner beobachte!
ketraun