gpt4 book ai didi

Delphi - 在现有表格上分配 OnClose 表格

转载 作者:行者123 更新时间:2023-12-03 18:18:14 28 4
gpt4 key购买 nike

我的项目中有许多使用 Form OnClose 事件的 Forms。但是,我需要在运行时的所有表单上添加另一个“通用”OnClose。有没有办法只添加新的事件方法,而不是替换它?因此,表单将触发两个 OnClose 事件。

最佳答案

一次只能为一个事件分配一个处理程序。

您可以将“通用”处理程序分配给每个表单的 OnClose 事件,然后让每个表单覆盖其虚拟 DoClose() 事件以执行其本地操作工作。当准备调用通用处理程序时,它可以调用继承的 DoClose() 方法。例如:

type
TMyForm = class(TForm)
protected
procedure DoClose(var Action: TCloseAction); override;
end;

procedure TMyForm.DoClose(var Action: TCloseAction);
begin
// do something here...
inherited; // <-- call OnClose handler
end;

另一种方法是为实际的事件处理程序实现一个多播委托(delegate),然后该委托(delegate)可以根据需要调用其他处理程序。以下是关于该主题的一些博客:

Multicast events using generics

MultiCast Events - Part 1
MultiCast Events - Part 2
MultiCast Events - Conclusion

或者,您可以完全忽略 OnClose 事件并改为实现观察者模式(使用 DoClose() 调用观察者)。以下是关于该主题的一些博客:

Observer Design Pattern in Delphi

Delphi and the Observer Pattern

The Observer Pattern

关于Delphi - 在现有表格上分配 OnClose 表格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37866349/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com