怎么获取窗口中的所有子控件

yhtang 2005-04-21 11:30:18
怎么获取窗口中的所有子控件,包括label等的
...全文
480 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Heyongfeng 2005-04-22
  • 打赏
  • 举报
回复
另一个EXE的窗口?不好办吧
何鲁青 2005-04-22
  • 打赏
  • 举报
回复
查找的是另一个exe的某个窗口的
----------
好像不是太容易啊...
jjyy_cc 2005-04-22
  • 打赏
  • 举报
回复
同意楼上的意见,但是应该单独建立一个递归函数完成该功能,也许可以这样写
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;
freshui 2005-04-22
  • 打赏
  • 举报
回复
很奇怪的一件事,我利用上面给的方法,改变panel内的控件位置时,抛出例外...越界
我随便加入一个组件到pannel里面(静态),就好使了...
yeeyee 2005-04-22
  • 打赏
  • 举报
回复
看下这个代码,递归清空文本框,
改着看下

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;
hsmserver 2005-04-22
  • 打赏
  • 举报
回复
“ControlControlCount”
呵呵
hsmserver 2005-04-22
  • 打赏
  • 举报
回复
呵呵
kuki84 2005-04-22
  • 打赏
  • 举报
回复
有点画蛇添足了。。。。
kuki84 2005-04-22
  • 打赏
  • 举报
回复
for i:=0 to Form1.ControlControlCount-1
Sender=TSender(form1.controls[i]);
yhtang 2005-04-21
  • 打赏
  • 举报
回复
查找的是另一个exe的某个窗口的
g961681 2005-04-21
  • 打赏
  • 举报
回复
要使用递归吧,不用递归,查不全的。有层次问题的。
同样查找的时候,还可以用componnet来查找,是属于两个层次的查找!
darkliu 2005-04-21
  • 打赏
  • 举报
回复
同意
pengxuan 2005-04-21
  • 打赏
  • 举报
回复
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;
ly_liuyang 2005-04-21
  • 打赏
  • 举报
回复
呵呵上面的就是,注意容器是可以再包含下一级的

就是还需要遍历例如Panel类的容器组件

http://lysoft.7u7.net
憨逗熊 2005-04-21
  • 打赏
  • 举报
回复
var sender : TObject;
I : integer;

for I:=0 to form1.controlControlCount-1
sender=form1.controls[i];
yhtang 2005-04-21
  • 打赏
  • 举报
回复
高手呢

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧