在单个单元中使用'myClass'作为Event类型中的参数

时间:2011-12-26 12:30:42

标签: delphi delphi-xe2

我已经定义了事件类型:

TMyEvent = procedure(object: TMyClass) of object;

并且在同一单元中我还有一个类定义:

TMyClass = class(TObject)
    ...
  private
    FOnXXX: TMyEvent;
  protected
    ...
  public
    ...
    property OnXXX: TMyEvent read FOnXXX write FOnXXX;
  published
    { Published declarations }
  end;

如果我尝试编译,我会得到'E2003 Undeclared identifier:'TMyEvent''。

在C ++中我会使用原型。 有没有办法将它们放在一个单元中?

Sry,如果它是重复的,但我真的没有找到任何关于它的信息。

提前致谢, Peacelyk

2 个答案:

答案 0 :(得分:4)

您可以在事件声明之前声明该类:

TMyClass = class;
TMyEvent = procedure(object: TMyClass) of object;

然后你应该包括TMyClass的完整声明,以解决不满意的前方声明。

答案 1 :(得分:0)

尝试在定义之前加上类型,并且它必须位于接口部分而不是实现:

type
TMyEvent = procedure(object: TMyClass) of object;

请查看以下链接,了解ANATOMY OF A DELPHI UNIT