Erstmal Entschuldigung!
Noch eine Variante ohne das man gleich ein neues Control erzeugen muss! Hab ich selbst aber leider noch nicht getestet!
Es gibt eine
VCL-Nachricht namens CM_ENABLEDCHANGED, welche intern in SetEnabled abgeschickt wird.
Man muss sich nur an den Message-Handler des Edit-Controls anhängen.
Delphi-Quellcode:
TMyForm = class(...
...
private
pOldEdProc : TWndMethod;
procedure EdProc(var Message: TMessage);
procedure TMyForm.FormCreate(...);
begin
...
pOldEdProc := txtEd.WindowProc;
txtEd.WindowProc := EdProc;
...
end;
procedure TMyForm.EdProc(var Message: TMessage);
begin
pOldEdProc(Message); // andere Hacken unterstützen
with Message do
case Msg of
CM_ENABLEDCHANGED:
if txtEd.Enabled then
...
else
...;
end;
end;
Frage an den Moderator: Kann man nicht so was (ganz allgemein gehalten)als FAQ oder Source-Code ablegen?