procedure MyEventHandler();
begin
...
end;
begin
...
MyComponent.OnEvent := MyEventHandler;
...
end.
События и их обработчики
Код:
Проблема в том, что компилятор ругается на присвоение такими словами: "Incompatible types: 'method pointer and regular procedure'".
Соответственно вопрос: как нужно описать мой обработчик? Или он должен по-любому находиться в классе?
1. Создаём свой класс объектов (например TForm1).
2. Объявляем и реализуем в нём метод - параметры и результат должны соответствовать параметрам и результату обрабатываемого события.
3. Создаём объект своего класса (обработчик).
4. Создаём объект класса с событием (генератор).
5. Указываем метод объекта-обработчика в качестве свойства объекта-генератора
Тип обработчика роли не играет. Тип генератора обычно зависит от типа самого события (например, генератор события TNotifyEvent должен иметь тип, производный от TObject)
Код:
MyComponent.OnEvent := Self.MyEventHandler;
В качестве обработчика используется сам объект. Self - это стандартная ссылка на самого себя.
Спасибо, придется городить класс.
Если есть программа с визуальным интерфейсом, то обязательно присутствует хотя бы одина "форма". В классе формы пишется соответствующий метод, и этот метод объекта формы указывается в качестве обработчика события.
В том то и дело, что нету - программа консольная.