在程序中动态的创建一个组件,并显示.
窗体中已经存在一个组件,现在需要创建一个同类型的组件,要求该创建的组件与已经存在的组件具有相同的属性,及事件

解决方案 »

  1.   

    比如edit
    var
    edit1 : TEdit;Edit1 := TEdit.Create(Application);
      

  2.   

    create后使用assign 或assignto
      

  3.   

    这种方法能创建一个组件,但是不能创建一个与已经存在的组件一样的组件.
    假如要创建一个Edit,
    var
    edit1 : TEdit;Edit1 := TEdit.Create(Application);
    不能和一个已经存在的Edit有相同的属性和事件呀
      

  4.   

    Create后在Assign啊,这样就具有了相同的属性了。
    但是,这个问题的关键是原来窗体中控件的类型是不确定的。
    在动态创建控件以前要先知道类型才行啊!
      

  5.   

    我看了你的帖之后,我在实践中寻找答案,以下结果是可行的:
    var
      edit1:TEdit;
    begin
      edit1:=TEdit.Create(self);
      edit1.Parent:=self;
      edit1.Top:=0;
      edit1.Width:=121;
      edit1.Text:='Edit1';
    end;
      

  6.   

    可采用Prototype模式,给个链接学习学习吧。
    http://www.delphibbs.com/keylife/iblog_show.asp?xid=2547
    关键词:深克隆
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    showmessage('dd');
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
        btn : TButton;
    begin
        btn := TButton.Create(self);
        btn.Name := 'button2';
        btn.Parent := self;
        btn.Left := 0;
        btn.Top := 10;
        btn.OnClick := button1.OnClick;
    end;你不如做成控件。。
      

  8.   

    谢谢大家提供的方法,据说这是一个很前卫的技术,希望大家多多提供解体思想.
    =========================================================================
    不是告诉你了吗,采用Prototype模式,即原型模式。