加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Delphi中的事件如何运作?

发布时间:2020-12-15 09:52:51 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用此库 uZpRunConsoleApp从程序中获取控制台输出. 它有很好的文档,但我没有长时间使用Delphi,我不明白事件是如何工作的. 从我可以告诉我需要用我的应用程序调用ExecuteConsoleApp,我没有输出.看起来这个方法要我指定一个事件发生时可以触发的函
我正在尝试使用此库 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放在参数列表中的适当位置,它将起作用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读