问一个问题:如何才能遍历PageControl容器组件上的所有的控件??和Panel操作不同!!(100分)

  • 主题发起人 白衣书生
  • 开始时间

白衣书生

Unregistered / Unconfirmed
GUEST, unregistred user!
在Panel上的组件我可以这样遍历:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
for i:=0 to Panel1.ControlCount-1 do
listbox1.Items.Add(Panel1.Controls.Name);
end;

但是在PageControl中:
procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
for i:=0 to PageControl1.ControlCount-1 do
listbox1.Items.Add(PageControl1.Controls.Name);
end;
-----得到结果的却是TTabSheet,而不是各个组件(如Edit,Button等)。

另外:我如何能得到当前ActivePage(TabSheet)上的所有组件名字? 谢谢各位!
(查阅了以前的旧帖,没有结果。拜托各位!)
 
TTabSheet 也是一个容器,所以对于这种情况,通常需要使用一个第归调用

procedure name (aControl:TControl)
begin
.....
if aControl is TWinControl then
For i:=0 to TWinControl(aControl).ControlCount-1 do
Namel(TWinControl(aControl).Controls);
.....
end;

U See [:D]
 
多谢杨兄指点。
我去试试。

不过这个递归该怎样结束?
递推完成后回归的条件是____________?
 
递推完成后回归的条件是TWinControl(aControl).ControlCount-1
 
呵呵,其实用第归的目的就是解决大容器里有小容器的问题,要是TTabSheet 里面没有小容器了,就直接用TTabSheet也可以好了,不必这么麻烦的
 
ok
杨兄,这分是你的了! [:)]
 
顶部