
在 Delphi 中,你可以通过递归或者直接遍历 TForm 上的所有控件(TControl)。TForm 继承自 TWinControl,它有一个 Controls 属性,可以用于访问包含的所有控件。这个属性是一个数组,存储的是当前窗体上所有的控件。
代码示例:遍历 Form 上的所有 TControl
procedure TraverseControls(AControl: TWinControl);
var
i: Integer;
Control: TControl;
begin
for i := 0 to AControl.ControlCount - 1 do
begin
Control := AControl.Controls[i];
// 输出控件名称和类型
if Control.Name <> '' then
ShowMessage('Control Name: ' + Control.Name + ', Type: ' + Control.ClassName);
// 如果该控件是容器控件,则递归遍历其子控件
if Control is TWinControl then
TraverseControls(TWinControl(Control));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// 遍历当前 Form 上的所有控件
TraverseControls(Self);
end;
代码说明:
TraverseControls递归方法:该方法接收一个TWinControl参数,表示当前要遍历的控件容器。TWinControl是所有能够包含子控件的控件的基类,如TForm、TPanel等。ControlCount和Controls:TWinControl有ControlCount属性,用于获取控件的数量,而Controls[i]用于访问其中的每个控件。- 递归遍历:如果控件是容器控件(例如
TPanel或TGroupBox),则递归调用TraverseControls来遍历其子控件。 - 显示控件信息:你可以使用
Control.Name和Control.ClassName来获取控件的名称和类型,并可以根据需要进行其他处理。
扩展:
-
遍历指定类型的控件:如果你只想遍历某种类型的控件,可以在遍历时使用
is关键字进行类型检查。例如,只遍历按钮控件:
if Control is TButton then
ShowMessage('Button Name: ' + Control.Name);
总结:
这个递归方法可以帮助你遍历 Form 上的所有控件,并且可以进一步扩展以实现更加复杂的操作,如查找特定控件、修改控件属性等。



















