又一个小问题,请各位朋位再帮帮!(100分)

  • 主题发起人 主题发起人 denjin98
  • 开始时间 开始时间
D

denjin98

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用一个循环语句给各个EDIT的TEXT赋值,但不知如何用循环变量作为EDIT的下标,如:
for i=1 to 7 do
begin
edit&i.TEXT:=a;
end;
原本想实现:EDIT1.TEXT:=A[1] ...EDIT7.TEXT:=A[7], 但怎样用EDITI来代替EDIT1至
EDIT7呢?

 
for i:=1 to componentcount-1 do
if components is TEdit then
TEdit (components).text):='a';
 
如果不多的话,可以用一个数组来放置这些对象,然后通过操作数组操作这些对象
var
i:Integer;
dEdit:array[1..7] of TEdit;
begin
for i:=1 to 7 do
begin
dEdit:=TEdit.Create(self);
end;
dEdit[1]:=Edit1;
dEdit[2]:=Edit2;
dEdit[3]:=Edit3;
.........
for i:=1 to 7 do
begin
dEdit.Text:=a;
end;
end;
 
var
i:integer;
ct:tcomponent ;
begin
for i:=0 to componentcount-1 do
begin
if components is TEdit then
begin
ct :=components;
(ct as tedit).text :='asd';

end;


end;
 
使用lcl_003或cyf_00002的吧。
 
楼上所有方法都太复杂了.来个简单直观明了的.

var
i: Integer;
Edit: TEdit;
begin
for i := 1 to 7 do begin
Edit FindComponent(Format('Edit%d', )) as TEdit;
Edit.Text := a;
end;
end;
 
如果
Edit.text 要一定等于 I 可以参考一下下面的代码。
否则可以用lcl_003或cyf_00002。

procedure TForm1.Button3Click(Sender: TObject);
var
i,j :Integer;
begin
j:=1;
for i := 0 to componentcount-1 do
begin
if components.Name='Edit'+INTTOSTR(j) then
begin
(components AS TEdit).Text :=INTTOSTR(j);
j:=j+1;
end;
end;
end;
 
动态创建控件数组!

1. 动态生成控件
var
e:array of TEdit;
procedure TForm1.FormCreate(Sender: TObject);
var
i,n:integer ;
begin
n:=10;
setlength(e,n);
for i:=0 to n-1 do
begin
e:=TEdit.create(self);
e.parent:=self;
e.visible:=true;
e.left:=10;
e.top:=10+30*i;
e.width:=50;
e.height:=20;
end;

end;
 
认同 lcl_003,cyf_00002。比较简洁,好理解。
 
谢谢各位朋友帮助, 尤其是XJ—LIYQ , 使我的问题得以解决。
 
后退
顶部