2011-12-26 5 views
0

я определил тип события:Использование «MyClass» в качестве параметра типа событий в одном блоке

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++ я бы использовал прототипирование. Есть ли способ держать их в одном устройстве вместе?

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

Спасибо заранее, Peacelyk

ответ

4

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

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

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

0

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

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

Проверьте следующую ссылку, чтобы знать ANATOMY OF A DELPHI UNIT

Смежные вопросы