各位高手,我问一个关于循环控件的问题———— ( 积分: 154 )

  • 主题发起人 主题发起人 magical_li
  • 开始时间 开始时间
M

magical_li

Unregistered / Unconfirmed
GUEST, unregistred user!
我经常遇到此类问题……
在编程序的时候,界面上有n个edit,或类似的空间,比如lable,等,要对其进行赋值,
我一般都是写:
edit1.text:=‘’;
edit2.text:=‘’;
edit3.text:=‘’;
……
editn.text:=‘’;
可是以上程序如果赋的是同样或是可以规律的值时,比如:
edit1.text:=‘edit1’;
edit2.text:=‘edit2’;
edit3.text:=‘edit3’;
……
editn.text:=‘editn’;
其值可以循环得到,但是对控件就……;
不知道各位高手可有解决方案???
送上本人的全部几分!!希望大家讨论一下……
本人谢谢了先!
 
我经常遇到此类问题……
在编程序的时候,界面上有n个edit,或类似的空间,比如lable,等,要对其进行赋值,
我一般都是写:
edit1.text:=‘’;
edit2.text:=‘’;
edit3.text:=‘’;
……
editn.text:=‘’;
可是以上程序如果赋的是同样或是可以规律的值时,比如:
edit1.text:=‘edit1’;
edit2.text:=‘edit2’;
edit3.text:=‘edit3’;
……
editn.text:=‘editn’;
其值可以循环得到,但是对控件就……;
不知道各位高手可有解决方案???
送上本人的全部几分!!希望大家讨论一下……
本人谢谢了先!
 
for i := 0 to ControlCount - 1 do
begin
if Controls is TEdit then
TEdit(Controls).Text := Controls.Name;
end;
 
FindComponent()
 
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
For i := 0 to ComponentCount-1 do
if Components is TEdit then
(Components as TEdit).text := Components.Name;
end;
 
For i:=0 to Self.compomentCount-1 do
begin
if Self.Component is TEdit then
( Self.Component As TEdit ).text='ddd';
end;
 
for i:=1 to 8 do
(FindComponent('Edit'+IntToStr(i)) as TEdit).Text:='Edit'+IntToStr(i);
 
for i:=0
TEdit(FindComponent(edit+intostr(i)))
 
这样的话也可以直接创建的时候就用控件数组手动创建
然后用起来就方便了
 
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
c: TComponent;
begin
for i := 0 to Componentcount - 1 do
if Components is TEdit then
TEdit(Components).Text := TEdit(Components).Name;


//或

for i := 1 to 3 do
begin
c := FindComponent('edit' + inttostr(i));
if c = nil then
Break;
TEdit(c).Text := TEdit(c).Name+' _2';
end;


end;
 
可以参考
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3131848
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3098841
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3093473
 
谢谢各位!
 
多人接受答案了。
 
后退
顶部