一般来说,控件都有CREATE方法可用,你只要用它的继承动态产生控件即可,但要注意名字不能相同。

解决方案 »

  1.   

    写一个过程,Like this:
    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;
    然后在要生成控件的时候调用
      

  2.   

    给你个例子,Edit1:=TEdit.Create(Form1);
    不过你最好用一个TObjectList对象来管理这些自建的对象,记住最后要释放,例如:Edit1.Free
      

  3.   

    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 的值,这样创建的控件就不会重叠了。
      

  4.   

    同意Ask100的说法,bluetrees也是对的