gpt4 book ai didi

delphi - Delphi 中的事件如何工作?

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

我正在尝试使用此库从程序获取控制台输出 uZpRunConsoleApp 。它有很好的文档记录,但我使用 Delphi 的时间不长,而且我不明白事件是如何工作的。

据我所知,我需要使用我的应用程序调用 ExecuteConsoleApp,而我的应用程序没有输出。看起来该方法希望我指定一个在事件发生时可以触发的函数,但我不明白如何做到这一点。

我希望有人可以在这里传播一些信息。

我没有发布任何代码,因为这实际上并不是特定于代码的问题,但如果有人想要我到目前为止所拥有的内容,我会为他们进行编辑。

最佳答案

是的,事件处理程序基本上是对函数的引用。如果您曾经使用过回调,那么它基本上是相同的想法。如果没有,这里有一个快速概述:

事件类型定义如下:

TZpOnNewTextEvent = procedure(const Sender: TObject;
const aText: string) of object;

这意味着它是对对象方法(对象的)的引用,其签名如下所示:

type
TMyObject = class (TMyObjectAncestor)
//stuff here
procedure MyEventHandler(const Sender: TObject; const aText: string);
//more stuff here
end;

对象的位很重要。这具体是一个方法引用,而不是对独立函数的引用。

事件处理程序的用途是允许您自定义 ExecuteConsoleApp 的工作方式。这几乎与向表单设计器中的按钮添加代码完全相同。将按钮放置在窗体上,然后为其 OnClick 事件分配一个事件处理程序,该事件处理程序通过添加单击按钮时执行的代码来自定义按钮。不同之处在于,在这里,您没有表单设计器来将它们连接在一起。

幸运的是,语法非常简单。对于对象的过程(无论什么),只需给出名称即可传递事件处理程序。将 Self.MyEventHandler 扔到参数列表中的适当位置,它将起作用。

关于delphi - Delphi 中的事件如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3384589/

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