delphi xe10,控件可以根据名称下标动态调用吗?

例如:需要对edit1.text、edit2.text......edit100.text赋值。能不能用类似以下形式:
for I:=1 to 100 do
edit(I).text:='.......';

例如:

aa[1]:='123';

aa[2]:='中国';
...
aa[100]:='洛杉矶';

for I:=1 to 100 do
edit(I).text:=aa[i];

CaoZhy: 你的方法可以对edit赋值,但不能将aa[25]赋值给edit25,而是将aa[25]赋值给了某一个edit。这不能满足程序设计的要求。
对这个问题的一个解是:先判断搜索到的edit的名字是不是edit25,然后再赋值。
有没有更好的方案?

首先 根据edit(i)方式来访问控件是不可能的, 你的需求只是为了懒得写代码 嘿嘿........
可以使用其他方式(FindComponent)来达到目的

 var
  i: integer;
  nEdt: TComponent;
begin
  for i := 1 to 100 do
  begin
    nEdt := FindComponent('edit' + IntToStr(i));
    if nEdt = nil then
      Continue;
    if not (nEdt is TEdit) then
      Continue;
    TEdit(nEdt).Text := aa[i];
  end;
end;

另外, 个人建议, 类似你这种100个edit的需求:
1.不应该在界面里扔那么多edit给用户, 很乱, 如果真有这么多输入框应该分页
2.界面应该是少量, 有明确对象的输入框, 每个输入框都需要对应的值, 这时应该每个输入框有自己的可维护名称(比如 edtCity)
3.如果真的需要很多并且不能预知值得输入框, 建议动态创建, 这样在创建的时候就可以使其和一个了列表对应上, 也就实现你的需求了

 可以
for i:= 0 to form1.ControlCount - 1 do
if form1.Controls[i] is TEdit then
((form1.Controls[i]) as TEdit).Text:='...';
end;

注意,如果有groupbox panel之类的,需要递归遍历它的controls,以上代码只能找到直接在窗体上的textbox,不能找嵌套在别的控件中的。

function GetEdit(idx: Integer): TEdit;
begin
Result := FindComponent('Edit'+IntToStr(idx));

end;

for i := 0 to 100
begin
GetEdit(i).Text := 'xxx';
....
end;