你可以这样,动态生成100个Edit,并在生成的同时赋值:
给你一段代码,要修改哦。
动态生成100个Edit在一个pagecontrol的tab上,垂直排列,并赋值:
procedure TPRAForm.AddPage(PageIndex:integer); // ,num: integer
var
i:integer;
hh:TEdit;
begin
// num:=strtoint(edit1.text);
With xhl[PageIndex] Do //自己的PageControl
Begin
//生成TAB页面,将其放置于PageControl中
Tab := TTabSheet.Create(Tab);
Tab.PageControl := pcPage;
Tab.PageIndex := PageIndex;
//将TabSheet控件的Tag设为增加的TabSheet位置
Tab.Tag :=PageIndex;
Tab.Caption := '页面'+IntToStr(Tab.Tag+1);
pcPage.ActivePage := Tab;
num:=strtoint(numedit.text); //不止是100,任何数
for i:=1 to num do
begin
hh := TEdit.Create(self);
hh.Parent :=tab;
hh.Tag :=i;
hh.top:=10+i*25;
hh.Left :=80;
hh.Name:='Edit'+IntToStr(i);//Edit1、Edit2、Edit3、Edit4、Edit5……
hh.Text := IntToStr(i); //1、2、3、4、5……
end;
end;
end;
可以根据自己的情况,不让其垂直排列,那样的话你可以用两个变量来控制动态创建的Edit的位置(x,y嘛),然后还可以控制一行输出几个。
如果你的Edit在设计期间就放好了(不过这样够烦的),那就用tag吧,1-100的tag值对应Edit1-100。然后赋值:
var
Index:Integer;
For Index:=0 to ControlCount-1 do //或者到100
Begin
if Components[Index] is TEdit then
begin
//(Components[Index] As TEdit).Name:='Edit' + IntToStr(Index);//实现将edit的name改成Edit1-100
(Components[Index] As TEdit).Text := IntToStr((Components[Index] As TEdit).Tag);
end;
End