delphi – 如何为事件方法创建一个单独的单元,IDE允许我在设计时
发布时间:2020-12-15 04:13:49 所属栏目:大数据 来源:网络整理
导读:我有一个表单,其中包含某些具有事件处理程序的组件.现在我想将这些事件处理程序(那些方法)移动到一个单独的单元,仍然能够在设计时通过Object Inspector将它们分配给组件事件. 是否可以仅为事件方法创建一个单独的单元,以便Object Inspector允许我在设计时分
我有一个表单,其中包含某些具有事件处理程序的组件.现在我想将这些事件处理程序(那些方法)移动到一个单独的单元,仍然能够在设计时通过Object Inspector将它们分配给组件事件.
是否可以仅为事件方法创建一个单独的单元,以便Object Inspector允许我在设计时分配它们? 假设我是否会使用公共程序制作该单元: unit Unit2; interface procedure ButtonClick(Sender: TObject); implementation procedure ButtonClick(Sender: TObject); begin // do something here end; end. 或者使用已发布方法的类,如下所示: unit Unit2; interface type TMyClass = class published procedure ButtonClick(Sender: TObject); end; var MyClass: TMyClass; implementation { TMyClass } procedure TMyClass.ButtonClick(Sender: TObject); begin // do something here end; end. 如何为事件方法创建一个单独的单元,IDE允许我在设计时分配给组件事件?例如: 解决方法
大多数事件都是方法指针.这意味着它们指向类中的过程或函数.所以你不能只将程序Unit2.ButtonClick附加到按钮的on click事件上,但你可以编写一个实现事件处理程序的类,如下所示:
type TMainFormButtonEventHandler = class procedure ButtonClick(Sender: TObject); end; procedure TMainFormButtonEventHandler.ButtonClick(Sender: TObject); begin ShowMessage('Clicked'); end; 现在您可以创建这样的对象并将其链接到事件: handler := TMainFormButtonEventHandler.Create; Form1.Button1.OnClick := handler.ButtonClick; 不过,我不认为这是最好的应用程序结构.我不会从表单单元外部挂钩表单的GUI元素.但如果您愿意这样做,这就是它的完成方式. 如果您正在寻找GUI和逻辑的分离,请查看操作. TAction(包含在ActionList中)是GUI组件(如按钮)与其执行的操作代码之间的第一层abstration. 方便的是,您也可以在设计时创建这些操作,并将它们附加到按钮或其他控件.您不是为ButtonClick编写代码,而是为ActionExecute(操作的OnExecute事件)编写代码.按钮知道单击它时,它应该执行其相关操作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |