动态数组问题(20分)

  • 主题发起人 主题发起人 huayf
  • 开始时间 开始时间
H

huayf

Unregistered / Unconfirmed
GUEST, unregistred user!
有很多的EDIT,我想从动态的二维数组中读值并赋给EDIT.TEXT;
即要:Edit1.Text:=MyCheck[0,0];
Edit2.Text:=MyCheck[0,1];
........
通过循环怎么控制?

Edit不是动态生成的,Form设计的时候放上去的,我用'Edit+inttostr(i)'来取代
Edit的名称好象不行
 
FindComponent 函数可以
 
for i := 1 to 20 do

with TEdit(FindComponent('EDIT' + IntToStr(i))) do
begin
.............
end;
 
TEdit(findcomponent('edit1')).text:='AAAA';
 
for i := 1 to Form1.ComponentCount do
with TEdit(FindComponent('EDIT' + IntToStr(i))) do
begin
TEdit(findcomponent('EDIT' + IntToStr(i))).text:=:=MyCheck[0,i - 1];;
.............
end;
行吗?
 
如果你的 TEdit 是设计期放进去的,干脆就再定义一个控件数组得了
TForm1 = class(TForm)
...
private
Edits: array [1..4] of TEdit;
...
end;
...
procedure TForm1.FormCreate(Owner: TComponent);
begin
Edits[1]:= Edit1;
Edits[2]:= Edit2;
...
end;

定义好了以后你就直接使用 Edits[x] 的方法来访问啦
 
同意 SupermanTm
 
"老人家"的程序有漏洞!
假设你的edit组件有X个;
for i := 1 to X do
begin
TEdit(findcomponent('EDIT' + IntToStr(i))).text:=:=MyCheck[0,i - 1];;
.............
end;
 
我写了个按照我上面办法自动编写这段代码的小工具,需要的留个邮件
 
to SupermanTm ,给我一个,fyh@chtf-expo.com
我照你说的测试了,可行,你给我看看我的循环
for l:=0 to q-1 do begin //q是个动态变量,前面赋值了的
wedt[l].Text := MyQuestion[l];
end;
运行出错
 
多人接受答案了。
 
后退
顶部