delphi事件处理

 最近做一个组件Compont,需要获取控件的事件并进行处理,

 在delphi中,一个控件的处理函数设置好之后,它原来的处理函数就失效了,我想实现的机制

是如C#中的事件代理一样,

一个+=就可以实现对一个事件添加多个处理函数,但delphi中并没有这样的机制,不过还是有办

法解决的:

比如我在窗体中定义了一个按钮button1,它的默认OnClick处理函数为Button1Click(Sender :

Tobject);我要为它的OnClick事件添加一个处理函数,并且不影响这个Button1Click函数的执行

 

 

首先,声明一个与事件类型相同的对象A。
然后,对将这个对象A赋值为原有的处理函数B
将原有的处理函数B赋值为新的处理函数C
在C函数中,使用if Assigned(A) then  A(Sender);即可。

比如Button的Onclick事件,类型为TNotifyEvent,可以这样:
tmpButtonClick : TNotifyEvent;
procedure NewButtonOnClick(Sender:Tobject);
在FormShow事件中:
tmpButtonClick := Button1.OnClick;
Button1.OnClick := NewButtonOnClick;
在NewButtonOnClick中执行完所需功能之后:
if Assigned(tmpButtonClick) then
tmpButtonClick(Sender);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值