Ich mal ganz anderen Weg!
Das was du möchtest macht Windows schon als Standard!
Will man das beeinflussen muss man
(WM_)CN_CTLCOLOREDIT Wenn Normal
und
CN_CTLCOLORSTATIC wenn Disabled oder ReadOnly
abfangen.
So hab ich es bei mir abgeändert...
Delphi-Quellcode:
private
procedure CNCtlColorStatic(var Message : TWMCtlColor); message CN_CTLCOLORSTATIC;
procedure TPWEdit.CNCtlColorStatic(var Message: TWMCtlColor);
begin
inherited; // mache Standard
with Message do
// für deinen Fall Enabled prüfen
// und mittels SetTextColor den Farbwert ändern
// wie gesagt das ist Windows-Standard
if ReadOnly and (Parent <> nil) then
begin
Result := Parent.Brush.Handle;
SetBkColor(ChildDC, ColorToRGB(Parent.Brush.Color));
end;
end;