2014-10-14 1 views
0

Итак, у меня есть объект Delphi с событием, которое является «ссылкой на процедуру()». Обычно я могу сделать это, чтобы назначить делегата.Как я могу Delphi Вырезать обработчик событий или назначить метод интерфейса в качестве делегата в Delphi?

MyObj.OnBooom: = HandleOnBooom;

Теперь я хочу проверить, вызывается ли событие. Поэтому с Delphi Mocks, который опирается на интерфейс, я создам интерфейс, который имеет процедуру «OnBooom», передает интерфейс объекту TMock. Тогда сделайте это.

MyObj.OnBooom: = FMockCaller.Instance.OnBooom;

Но это не скомпилируется, потому что, по-видимому, Delphi считает, что в правой части я просто вызываю процедуру интерфейса, вместо того, чтобы назначать ее левой стороне.

Итак, есть ли способ, которым я могу заставить это задание работать? или Есть ли другой способ Delphi Mocks событие? Благодарю.

+0

Аналогичный вопрос, [метод интерфейса в качестве обработчика событий] (http://stackoverflow.com/q/3422142/576719). –

ответ

2

Вы можете использовать анонимный метод:

MyObj.OnBooom := procedure begin FMockCaller.Instance.OnBooom; end;