Использование myClass в качестве параметра в типе события в одном модуле - PullRequest
0 голосов
/ 26 декабря 2011

Я определил тип события:

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:' TMyEvent ''.

В C ++ я бы использовал прототипирование. Есть ли способ сохранить их в одном устройстве?

Извините, если это дубликат, но я действительно не нашел никакой информации об этом.

Заранее спасибо, Peacelyk

Ответы [ 2 ]

4 голосов
/ 26 декабря 2011

Вы должны переслать объявление класса перед объявлением события:

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

Затем вы должны включить полное объявление TMyClass, чтобы разрешить неудовлетворенное прямое объявление.

0 голосов
/ 26 декабря 2011

Попробуйте ввести type перед определением, и оно должно быть в разделе Interface не реализовано:

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

Проверьте следующую ссылку, чтобы узнать АНАТОМИЯ ЕДИНИЦЫ ДЕЛЬФИ

...