不需要。只要自己调用自己就可以了。记得要有递归出口。
Sample:
procedure EnableControls(AParent: TWinControl; const AEnabled: Boolean);
var
i: Integer;
AWinControl: TWinControl;
begin
with AParent do
for i := 0 to ControlCount - 1 do begin
// Set enabled property
Controls[i].Enabled := AEnabled;
// Set all his children's property of enable
if Controls[i] is TWinControl then begin
AWinControl := TWinControl(Controls[i]);
if AWinControl.ControlCount > 0 then
EnableControls(AWinControl, AEnabled);
end
end
end;
Sample:
procedure EnableControls(AParent: TWinControl; const AEnabled: Boolean);
var
i: Integer;
AWinControl: TWinControl;
begin
with AParent do
for i := 0 to ControlCount - 1 do begin
// Set enabled property
Controls[i].Enabled := AEnabled;
// Set all his children's property of enable
if Controls[i] is TWinControl then begin
AWinControl := TWinControl(Controls[i]);
if AWinControl.ControlCount > 0 then
EnableControls(AWinControl, AEnabled);
end
end
end;
begin
if (i=0) or (i=1) then result:=1;
result:=fac(i-1);
end;