如何在程序运行时将给已定义控件动态增加事件? 我想在运行时给已设计或动态创建过的控件重新定义响应事件,如何处理? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Btn := TButton.create;Btn.OnClicked:=FuncName(); 如果要为动态控件加入事件直接写一个方法或过程函数就可以了但有一点要注意你的过程的参数一定要和控件的事件的参数相同正所谓要赋值也要长得一样才能赋啊Btn.OnClicked:=FuncName(Sender: TObject); 给你个例子:Type //下面的可以先在form上加控件后把它的事件考来 procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);在Creat后ClientSocket.OnConnect := ClientSocket1Connect;ClientSocket.OnDisconnect := ClientSocket1Disconnect;ClientSocket.OnRead:= ClientSocket1Read;ClientSocket.OnError := ClientSocket1Error; 谢谢,这类方法只是在动态创建控件时就赋予了事件, 我需要的是,当控件动态创建后, 在需要的时候再赋与它相应的事件,例如:....Btn := TButton.create;//Btn.OnClicked:=FuncName(); (假设这个代码在此时并未写出)....procedure form1.FuncName(...)begin...end如果按下button2,则执行:Btn.OnClicked:=FuncName(); 但是在编译时出错,提示OnClicked未定义,谁知道应该错误在什么地方? Btn.OnClicked 应为 Btn.OnClick 为什么要在需要的时候再赋与它相应的事件呢?这样好象并没有多大的意义啊?而且事件你都必须先在Type下声明啊! to ifiles(iwan):谢谢, 但不是这个问题 就象上面说的那样(dajianshi)只需要注意参数相同就可以了YouProc()的参数要与该事件的参数一致 我的问题或许很简单,只是我不会 Delphi如何编写SQLSERVER 扩展存储过程!?? 如何让线程CPU占用率不要太高[只有这么多分, 如果需要以后补上] 请给以下DELPHI代码意见 关于FORM生成的问题 该怎么做... 求万年历控件(有新,旧历) delphi 直接上传文件到网盘,求指教 过生日罗,谁与我同乐??大家在外都辛苦了有什么想说的就留在这儿吧~~我的口袋有33块 怎样得到SQL数据库中的所有表的名字? 中秋节快乐!高兴,散分。来者有份。 输入法的问题?
Btn.OnClicked:=FuncName();
直接写一个方法或过程函数就可以了
但有一点要注意你的过程的参数一定要和控件的事件的参数相同
正所谓要赋值也要长得一样才能赋啊
Btn.OnClicked:=FuncName(Sender: TObject);
Type //下面的可以先在form上加控件后把它的事件考来
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
在Creat后
ClientSocket.OnConnect := ClientSocket1Connect;
ClientSocket.OnDisconnect := ClientSocket1Disconnect;
ClientSocket.OnRead:= ClientSocket1Read;
ClientSocket.OnError := ClientSocket1Error;
....
Btn := TButton.create;
//Btn.OnClicked:=FuncName(); (假设这个代码在此时并未写出)
....procedure form1.FuncName(...)
begin
...
end如果按下button2,则执行:
Btn.OnClicked:=FuncName(); 但是在编译时出错,提示OnClicked未定义,谁知道应该错误在什么地方?
这样好象并没有多大的意义啊?
而且事件你都必须先在Type下声明啊!
谢谢, 但不是这个问题
只需要注意参数相同就可以了
YouProc()的参数要与该事件的参数一致