var
btn1:Tbutton
begin
  btn1.onclick:=bt1_Click();
end;procedure bt1_Click(Sender:TObject);//该函数自己声明
begin
end;
这样动态生成的btn1的Click事件就变成了bt1_Click了

解决方案 »

  1.   

    可以看看Delphi的帮助,查方法指针:procedure of object其实就是将你的事件的方法的入口地址指向一个已经存在的方法,当然需要同种方法之间传递地址,例如:btn1.onclick := btn2.onclick;如果是你自己申明的函数什么的,这样就不行了,不过我试验过可以通过以下的方法来解决:@btn1.onclick := @myProcedure,会有什么不好的结果我就不太清楚了,哪位大侠有研究可以顺便告诉我。
      

  2.   

    下面定义了一个鼠标单击事件的处理函数aa.1.先定义一个过程 private  procedure aa(Sender: TObject);
    2.var  bb:TEditxxx;
      bb:=TEditxxx.create(self);
      bb.Parent:=self;  //self是form1;
      bb.OnClick:=aa;3. 实现函数aa.
      procedure aa(Sender: TObject);
      begin
          //write you code.
      end;
      

  3.   

    你动态创建TEditxxx的语句应该在别的程序里吧!procedure createedit;
    begin
      TEditxxx =TEdit.create(self);
      TEditxxx.OnClick:=MyClick;
    end;procedure MyClick;
    begin
       your_Prog;
    end;
      
      

  4.   

    onClick := Myfunction;
    这个我一直再用,不过因为一直加了“()”而编译不过,中间的提示不要加括号才是问题关键啊