Du kannst die Methode SetEnabled des Panels überschreiben...
Ja, dann müßten aber neue Komponenten abgeleitet und installiert werden - jede Menge Arbeit...
Einfacher geht's, wenn die Nachrichtenverarbeitung des betreffenden Panels überschrieben wird:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
OldWindowProc:=Panel1.WindowProc; //alte Methode merken
Panel1.WindowProc:=NewWindowProc; //auf neue Methode umleiten
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Panel1.WindowProc:=OldWindowProc; //alte Methode wieder herstellen
end;
procedure TForm1.NewWindowProc(var Message: TMessage);
var
n: Integer;
begin
case Message.Msg of
CM_ENABLEDCHANGED:
begin
with Panel1 do
for n:=0 to ControlCount-1 do
Controls[n].Enabled:=Enabled; //-> Child-Elemente anpassen
end;
end;
OldWindowProc(Message); //alte Methode aufrufen
end;