我正试图弄清楚如何声明一条记录和多个相互使用的对象事件。问题是,无论我以何种方式声明它们,我都有一个"未声明的标识符"。
使用下面的代码,我可以让它们相互使用吗?事件将在对象中使用,记录将被传递并使用到对象的构造函数中。
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;