Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

События и их обработчики

497
20 декабря 2006 года
IL84
267 / / 24.04.2003
Имеется консольное приложение, в котором используется невизуальные компонент. В компоненте есть событие, которое надо обработать, пример:

 
Код:
procedure MyEventHandler();
begin
...
end;

begin
   ...
   MyComponent.OnEvent := MyEventHandler;
   ...
end.


Проблема в том, что компилятор ругается на присвоение такими словами: "Incompatible types: 'method pointer and regular procedure'".

Соответственно вопрос: как нужно описать мой обработчик? Или он должен по-любому находиться в классе?
309
20 декабря 2006 года
el scorpio
1.1K / / 19.09.2006
Дело в том, что обрабочиком не может быть ни процедура, ни функция. Обработчиком события может быть только метод конкретного объекта
1. Создаём свой класс объектов (например TForm1).
2. Объявляем и реализуем в нём метод - параметры и результат должны соответствовать параметрам и результату обрабатываемого события.
3. Создаём объект своего класса (обработчик).
4. Создаём объект класса с событием (генератор).
5. Указываем метод объекта-обработчика в качестве свойства объекта-генератора

Тип обработчика роли не играет. Тип генератора обычно зависит от типа самого события (например, генератор события TNotifyEvent должен иметь тип, производный от TObject)

 
Код:
MyComponent.OnEvent := Self.MyEventHandler;

В качестве обработчика используется сам объект. Self - это стандартная ссылка на самого себя.
497
20 декабря 2006 года
IL84
267 / / 24.04.2003
Спасибо, придется городить класс.
309
20 декабря 2006 года
el scorpio
1.1K / / 19.09.2006
НЕНАДО!!!!


Если есть программа с визуальным интерфейсом, то обязательно присутствует хотя бы одина "форма". В классе формы пишется соответствующий метод, и этот метод объекта формы указывается в качестве обработчика события.
497
20 декабря 2006 года
IL84
267 / / 24.04.2003
В том то и дело, что нету - программа консольная.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог