如何
找到表单上当前对用户可见的所有控件?即列出所有可以按选项卡显示且不会从视图中隐藏的控件(例如,在不可见的标签页上)。
既然你写了要列出你可以按 Tab 键跳到的控件,我假设你说的是窗口控件。
然后你可以简单地做
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 0 to ComponentCount - 1 do
if Components[i] is TWinControl then
if TWinControl(Components[i]).CanFocus then
Memo1.Lines.Add(Components[i].Name)
end;
如果您知道窗体拥有其所有子控件,而没有其他控件。否则,你必须做
procedure AddVisibleChildren(Parent: TWinControl; Memo: TMemo);
var
i: Integer;
begin
for i := 0 to Parent.ControlCount - 1 do
if Parent.Controls[i] is TWinControl then
if TWinControl(Parent.Controls[i]).CanFocus then
begin
Memo.Lines.Add(Parent.Controls[i].Name);
AddVisibleChildren(TWinControl(Parent.Controls[i]), Memo);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
AddVisibleChildren(Self, Memo1);
end;