怎样将一个容器里所有的控件枚举出来 ( 积分: 50 )

  • 主题发起人 主题发起人 siaosa
  • 开始时间 开始时间
S

siaosa

Unregistered / Unconfirmed
GUEST, unregistred user!
1.怎样将一个容器里所有的控件枚举出来? 可能容器里还有容器

2.有没有一个函数可以判断某个控件是否在某个容器里?该控件可能在容器的容器里。
 
for i := 0 to ComponentCount - 1 do
ShowMessage(Components.ClassName);
 
To:free_dragon
不是Form,是一容器控件,而且该容器控件里还有容器控件
 
两个方法:
procedure GetChildControls(AControl: TWinControl; Strs: TStrings);
var
I: Integer;
begin
for I := 0 to AControl.ControlCount - 1 do
begin
Strs.Add(AControl.Controls.Name);
if AControl.Controls is TWinControl then
GetChildControl(TWinControl(AControl.Controls), Strs);
end;
end;

procedure GetChildControls(AParent: TWinControl; Strs: TStrings);

function ParentIs(AControl: TControl): Boolean;
begin
Result := True;
while AControl.Parent <> nil do
begin
if AControl.Parent = AParent then
Exit;
AControl := AControl.Parent;
end;
Result := False;
end;

var
I: Integer;
begin
Strs.Clear;
Strs.BeginUpdate;
for I := 0 to Form1.ComponentCount - 1 do
if Form1.Components is TControl then
if ParentIs(TControl(Form1.Components)) then
Strs.Add(Form1.Components.Name);
Strs.EndUpdate;
end;

第一个可能更快
 
接受答案了.
 
后退
顶部