yq97001 :
只有遍历所有控件這種方法,很快的,這樣做根本不影響速度:
比如我要找一個'a'名字的的tedit控件
for i:=0 to self.componentcount-1 do
if self.components is Tedit then
if self.components.name='a' then
tedit(self.findcomponent('a')) //這樣可以找到該控件
delphi 運行這樣的循環太快了根本不影響速度
用FindComponent,小例子
**************************************************
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;
简单得很:
var
S: TComponent; //如果已知它是什么类型控件,直接定义为什么控件即可,如: S:TButton;
begin
S:=FindComponent('button2');
(S as TButton).caption:='find'; //如已知并已定义为某一类型控件,直接 S.Caption:='find' 即可。
end;