Delphi設計期的控件如何按數組命名啊? ( 积分: 50 )

  • 主题发起人 主题发起人 lixin38
  • 开始时间 开始时间
L

lixin38

Unregistered / Unconfirmed
GUEST, unregistred user!
100個Edit,需要賦值100個,總不可能這樣寫吧
Edit1.text:='1';Edit2.text:='2'......Edit100.text:='100';
能否這樣呢?謝謝
For i:=1 to 100 do
begin
Edit.text:=IntToStr(I);
end
 
100個Edit,需要賦值100個,總不可能這樣寫吧
Edit1.text:='1';Edit2.text:='2'......Edit100.text:='100';
能否這樣呢?謝謝
For i:=1 to 100 do
begin
Edit.text:=IntToStr(I);
end
 
For i:=1 to 100 do
begin
//用Findcomponent,具体的语法好象是这样的,记不太清了.
(Findcomponent('Edit'+Inttostr(i)) as TEdit).Text := Inttostr(i);
end
 
你可以这样,动态生成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
 
var
I: Integer;
begin
for I := ComponentCount - 1 downto 0 do
if Components is TEdit then
beign
//TEdit(Components).Name := 'Name' + IntToStr(I);
TEdit(Components).Text := 'test';
end;
 
謝謝樓上的三位
 
后退
顶部