Mit einer rekursiven procedure müsste das gehen - so in dieser Art:
Delphi-Quellcode:
procedure Ctrl_SetEnabledState( ACtrl: TWinControl; State: Boolean );
var
ChildCtrl: TWinControl;
i: Integer; // Laufvar.
begin
// Alle Child-Controls disablen
for i:=0 to ACtrl.ControlCount do begin
ChildCtrl := ACtrl.Controls[i];
if ChildCtrl is TWinControl then begin
Ctrl_SetEnabledState( ChildCtrl, State ); // Rekursion!
end;
end;
// Control disablen
ACtrl.Enabled := State;
end;
Voraussetzung dafür ist natürlich, dass die property "Enabled" in TWinControl definiert ist - das weiss ich jetzt nicht auswendig. Aber so - oder so ähnlich - müsste es gehen.