- 0
- 0
- 约1.5千字
- 约 3页
- 2021-11-08 发布于江苏
- 举报
Delphi的事件如何设置一个以上的事件处理者?
熟悉 Delphi的人都知道,事件(event)是 Object Pascal语言很棒的一个特性。但是如果按照标准的写法,会有一个小缺点:它只允许有一个事件处理者(event handler),如果有超过一个以上的对象方法被设置成为某个事件的事件处理者,则原先被设置的事件处理者将被忽略掉。这点我们看到后来的 C#在语法上做了改进,使其能够支持多个事件处理者。
虽然支持一个以上的事件处理者在实际编码实现时很少有这个需求,一般支持一个事件处理者已经够用,但也许有人跟我一样会想,万一有一天有这个需要时怎么办?其中一个做法是在设置新的事件处理者时,将旧的事件处理者保存起来; 当新的事件处理者被调用时,再调用旧的事件处理者。这么做也可以,就是有一点别扭,而且有超过二个以上事件处理者时,代码逻辑难免显得凌乱了。
有没有更直观一点的方法呢?
从有支持泛型和TList类的 Delphi版本开始,我觉得可以用 TListTEvent来 实现。
Ok, 有经验的 Delphier看到这里应该就明白怎么做了吧!?
为了避免还有些人没明白,我继续把具体实现的代码写完:
例如,有一事件定义为
TMyNotifyEvent = procedure(Sender: TObject; test: String) of object;
那么,要让某个类的某个事件支持
原创力文档

文档评论(0)