Delphi的事件如何设置一个以上的事件处理者?.docxVIP

  • 0
  • 0
  • 约1.5千字
  • 约 3页
  • 2021-11-08 发布于江苏
  • 举报

Delphi的事件如何设置一个以上的事件处理者?.docx

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

文档评论(0)

1亿VIP精品文档

相关文档