edit1.text ....edit10000.text 的赋值(50分)

  • 主题发起人 njcdcdelphi
  • 开始时间
N

njcdcdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
程序初始想给edit1.text至edit10000.text 赋值
edit1.text:='';
edit2.text:='';
....
edit10000.text:=''

如何用
for i=1 to 10000 do begin
??
??
end;

多谢!
 
var edname:String;
B_edit:TEdit;
begin
for i:=1 to 10000 do
begin
edname:='edit'+inttostr(i);
B_Edit:=FindComponent(edname);
B_Edit.text:=inttostr(i);
end;
end;
 
对不起,没认真,不能直接用TEdit,应改为如下:
var edname:String;
B_edit:TComponent;
i:integer;
begin
for i:=1 to 3 do
begin
edname:='edit'+inttostr(i);
B_Edit:=FindComponent(edname);
TEdit(B_Edit).text:='';
end;
end;
 
向你这样 在我看来 是不妥的,
我觉得 可以这样
声明一个控件数组 以edit(1).text …… edit(1000).text 的方式 添加入循环体
具体可见: (如何进行类型转换,如何实现控件的数组化 )
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1252354
请注意 bigroute 的答案
 
var
edit:Tedit;
for i:=0 to 10000 do
begin
edit:=TEdit.create(self);
edit.name:='edit'+inttostr(i);
edit.width:=....
edit.height:=....
....
end;
 
以上方法都有一点罗嗦,这个更简洁一些:
var i:integer;
begin
for i:=0 to ComponentCount-1 do
if (Components is Tedit) then
Tedit(Components).Text := '888';//或:Tedit(Components).clear;
end;
 
china_delphi的方法是不错,可是并不是所有的Edit都要附值啊。
还是HunterTeam的方法比较活啊。
 
给要赋值的TEdit的Tag赋一个>0的值。
然后,
var i:integer;
begin
for i:=0 to ComponentCount - 1 do
if (Components is TEdit) then
if (Components as TEdit).Tag = XX then
(Components as TEdit).Text := '';
end;
 
for i:=1 to 10000 do
begin
edname:='edit'+inttostr(i);
B_Edit:=FindComponent(edname);
B_Edit.text:=inttostr(i);
end;
 
多谢各位
 
顶部