我正在试图弄清楚如何声明记录和许多彼此使用的对象事件。问题是无论我声明它们的方式,我都有一个“未声明的标识符”。
因此,使用下面的代码,我可以让它们互相使用吗?事件将在对象中使用,记录将被传递并用于对象的构造函数。
TMyEvent = procedure(Sender: TObject; var Rec: TMyRecord) of object;
TMyRecord = record
OnMyEvent: TMyEvent;
end;
这可能吗?它需要适用于所有版本的Delphi 7及更高版本。
答案 0 :(得分:14)
如果您使用的是更新的Delphi版本,则可以在记录中声明类型。以下是您从事件中引用记录的方法:
type
TMyRecord = record
public type
TMyEvent = procedure (Sender: TObject; var Rec: TMyRecord) of object;
public
OnMyEvent: TMyEvent;
end;
答案 1 :(得分:3)
不幸的是,前向声明只允许用于类而不是记录,因此我知道的唯一方法是使用指针:
PMyRecord = ^TMyRecord;
TMyEvent = procedure(Sender: TObject; Rec: PMyRecord) of object;
TMyRecord = record
OnMyEvent: TMyEvent;
end;