wangxd1976(西门吹雪)说的部分对,梢改一下: procedure Form1.createCtrlor(CtrorNmae:string); var edt:Tedit; begin edt:=Tedit.create(self); edt.name:=CtrorNmae+IntToStr(i); edt.parent:=form1; edt.left:=1+k; edt.top:=1+k; edt.height:=25; edt.width:=100; end; 在循环调用时改变 i 和 k 的值,这样创建的控件就不会重叠了。
procedure Form1.createCtrlor(CtrorNmae:string);
var edt:Tedit;
begin
edt:=Tedit.create(self);
edt.name:=CtrorNmae;
edt.parent:=form1;
edt.left:=1;
edt.top:=1;
edt.height:=25;
edt.width:=100;
end;
然后在要生成控件的时候调用
不过你最好用一个TObjectList对象来管理这些自建的对象,记住最后要释放,例如:Edit1.Free
procedure Form1.createCtrlor(CtrorNmae:string);
var edt:Tedit;
begin
edt:=Tedit.create(self);
edt.name:=CtrorNmae+IntToStr(i);
edt.parent:=form1;
edt.left:=1+k;
edt.top:=1+k;
edt.height:=25;
edt.width:=100;
end;
在循环调用时改变 i 和 k 的值,这样创建的控件就不会重叠了。