【发布时间】:2010-12-21 16:38:55
【问题描述】:
我需要遍历组件并分配一个事件处理程序(例如为所有 TButton 动态分配 OnClick 事件到
ShowMessage('You clicked on ' + (Sender as TButton).Name);
问题是在某些情况下我已经分配了 TButton OnClick 事件。
有没有办法解决这个问题?
假设我有 Button1,其硬编码的 onclick 事件处理程序是:
ShowMessage('This is Button1');
在我的“解析”之后,我希望 Button1 的完整事件处理程序变为:
ShowMessage('This is Button1'); // design time event handler code
ShowMessage('You clicked on ' + (Sender as TButton).Name); // runtime added
注意:我正在寻找一种解决方案,允许我按原样使用 TButton 而无需从它继承。
【问题讨论】:
-
类似问题(以完整代码为答案):stackoverflow.com/questions/2441672/…
-
窥视 TApplicationEvents 源,有你想要的相同事件接收器。
-
你想要的总称是multicast events,但是Delphi没有这个功能。
标签: delphi event-handling