我动态创建一个btn(按钮);
我想将已存在的button1的值全赋给btn;
用btn:=Button1不行;
用btn.assign(button1)也不行。
请问各位高手,该怎么做?

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
     btn:TButton;
    begin
     btn:=TButton.Create(self);
     btn:=button1;
     showmessage(btn.Caption);
    end;一点问题都没有啊
      

  2.   

    这样就能做一个完全一样的button1吗?
    不行,我作过的。
    而且,从donny2000(阿峰)的代码中是无法显示btn的。
      

  3.   

    TButton类好象没有实现那个方法吧....
    还是老老实实一个个赋值吧,只有那么几个重要的属性
      

  4.   

    其实 donny2000(阿峰)的代码已经可以实现了,但是就是没有写显示的部分,显示的部分实际上是Parent属性确定的。
    即Btn.Parent:=Self
    如果btn是放在Panel上的,则写
    Btn.Parent:=Panel1就可以显示了。
      

  5.   

    直接用Assign不可以吗?我看看
      

  6.   

    To Donny2000  你使用的这个方法如果早成内存泄露,也就是说你在创建了Btn这个对象指针后,如果在让他指向Button1之前你给Btn赋予了其他的对象,那么在你不释放这个对象的前提下,容易让这个资源丢失!
      

  7.   

    概念都搞不清楚~~~~~    btn只是一个指针,你把它指向button1,以后所有的操作就是对button1指向的对象,而原来btn指向的对象就丢失了.虽然可以通过它的Parent释放它,但终归不是好方法.    还是老老实实一个一个写,不会出错误,我们要的是无错的,虽然~~~一个bug都没有的程序不可能有(有也是那些只几句代码或根本没有代码的程序,那也能称程序?),但减少bug是程序员的职责.
      

  8.   

    自己覆盖Button的Assign方法,然后自己再调用Assign方法就可以防止内存泄漏了
      

  9.   

    To Linux  早成内存泄露其实完全可以避免,只要不要让新建立的对象在被赋予其他内容之前指向过任何对象就可以。不过即使自己重新定义Assign方法,也需要把Button的所有属性列举出来,所以个人认为这个问题的主要关键还是如何可以把一个对象的属性完全列举出来,如果手动进行这个工作,不免有点麻烦了。所以大家可以看看这个地址的帖子,里面有几种列举一个对象的全部属性的方法(俺还没有仔细看过!)http://expert.csdn.net/Expert/topic/1593/1593563.xml?temp=.7580377不知道他们的方法是不是可以做到列举对象全部属性的功能!