根据名字,如何用递归快速找到控件? (50分)

  • 主题发起人 主题发起人 tdKno
  • 开始时间 开始时间
T

tdKno

Unregistered / Unconfirmed
GUEST, unregistred user!
根据名字,如何用递归快速找到控件?
 
楼主都已经知道答案了,还问什么啊
 
怎样用findcomponent递归???
 
findcomponent涉及不到递归吧?你想实现什么功能呀?
 
用Findcomponent不需要递归啊?
给出Name就可以直接找到了
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
const
NamePrefix = 'MyEdit';
begin
for i := 1 to 20 do begin
TEdit.Create(Self).Name := NamePrefix + IntToStr(i);
with TEdit(FindComponent(NamePrefix + IntToStr(i))) do
begin
Left := 10;
Top := i * 20;
Parent := self;
end;
end;
end;
 
to seucag:
你的只能找出owner为form1的控件,我要的是: 可以找到在所有容器上的控件
 
FindComponent即可找到Form中的所有控件,和Owner无关的。
我想楼主是和FindControl的方法混了?
如果需要根据Owner做一些处理,可以用FindChildControl,这个就需要递归了。
 
var
i:integer;
begin
for i:=0 to ComponentCount -1 do
begin
if (components is TEdit) and ((components as TEdit).Name ='Edit3') then (components as TEdit).Enabled :=true
end;
end;
这是一个找EDIT3控件的例子,前面的判断是判断的是不是要检测的控件的类,后面的检测是不是要找的控件名称。
 
function FindComponent(const AName:string):TComponent;
还递归什么呀?

if FindComponent(AName)<>nil then//表示找到
showmessage('找到')
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
896
SUNSTONE的Delphi笔记
S
S
回复
0
查看
873
SUNSTONE的Delphi笔记
S
后退
顶部