如何声明包含使用记录作为参数的事件的记录



我正试图弄清楚如何声明一条记录和多个相互使用的对象事件。问题是,无论我以何种方式声明它们,我都有一个"未声明的标识符"。

使用下面的代码,我可以让它们相互使用吗?事件将在对象中使用,记录将被传递并使用到对象的构造函数中。

  TMyEvent = procedure(Sender: TObject; var Rec: TMyRecord) of object;
  TMyRecord = record
    OnMyEvent: TMyEvent;
  end;

这可能吗?它需要在德尔福7及以上的所有版本中工作。

如果您使用的是最新的Delphi版本,则可以在记录中声明类型。以下是您可以参考活动记录的方法:

type
  TMyRecord = record
  public type
    TMyEvent = procedure (Sender: TObject; var Rec: TMyRecord) of object;
  public
    OnMyEvent: TMyEvent;
  end;

不幸的是,前向声明只允许用于类,而不允许用于记录,所以我所知道的唯一方法是使用指针:

PMyRecord = ^TMyRecord;
TMyEvent = procedure(Sender: TObject; Rec: PMyRecord) of object;
TMyRecord = record
  OnMyEvent: TMyEvent;
end;

最新更新