同意楼上的意见,但是应该单独建立一个递归函数完成该功能,也许可以这样写
var
ChildWindowList:TList;
procedure GetChildWindowList(Owner:TWinControl)
var
i:Integer;
tmpWinControl:TWinControl;
begin
for i:=0 to Owner.ComponentCount-1 do
begin
ChildWindowList.add(owner.Controls[i]);
if owner.Controls[i].ComponentCount>0 then GetChildWindowList(owner.Controls[i]);
end;
end;
procedure TFormCYBase.ClearText(AControl:TWinControl);
var
I: Integer;
begin
for I := 0 to AControl.ControlCount - 1 do // Iterate
begin
//需清空处理控件
if AControl.Controls[i] is TCustomEdit then
begin
(AControl.Controls[i] as TCustomEdit).Text:='';
end;
if AControl.Controls[i] is TCustomComboBox then
begin
(AControl.Controls[i] as TCustomComboBox).ClearSelection;
end;
//可以 作为 父亲的控件处理事件。
if AControl.Controls[i] is TCustomControl then
begin
ClearText(AControl.Controls[i] as TCustomControl);
end;
end;
end;
procedure TFormCYBase.FormCreate(Sender: TObject);
begin
ClearText(self);
end;
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=0 to form1.ComponentCount-1 do
begin
ShowMessage(Form1.Components[i].Name);
end;
end;