Особенности реализации событий
Сообщения о наступлении события поступают от Windows. Их сотни. Работать с ними сложно. Одно из больших достижений Delphi состоит в том, что программист не работает с сообщениями Windows, хотя такая возможность у него есть. Он работает со стандартными событиями Delphi, а их около 20 и работать с ними проще.
Рассмотрим, как реализованы события.
Во время выполнения приложения Delphi вызовы обработчиков событий находятся в методах, обрабатывающих сообщения Windows. В этих методах проверяется, известен ли адрес обработчика события, и, если он есть, то обработчик события вызывается.
События различны, но общим для них является параметр Sender типа TObject и ключевая фраза of object после описания типа. Параметр Sender: TObject – отправитель, он указывает на источник события. Помимо явно описанных параметров методу передается еще и Self – указатель на вызвавший его экземпляр (объект).
Самый простой тип события – TNotifyEvent, сообщение об этом событии не имеет других параметров, кроме Sender.
Тип события является указателем на метод, он определяется в самом простом стандартном случае так:
type
TNotifyEvent= procedure( Sender:TObject) of object;
Здесь Sender - параметр, указывающий на источник события.
Обратите внимание! Тип TNotifyEvent - это процедурный тип. Тогда событие OnClick - это свойство процедурного типа TNotifyEvent:
Property OnClick:TNotifyEvent;
События имеют разное количество и тип параметров в зависимости от происхождения и предназначения. Delphi определяет состав событий, на которые может реагировать каждый управляющий элемент формы. Список этих событий представляется на странице Events Инспектора объектов для каждого компонента. Традиционно может быть предусмотрена реакция на 3 вида событий от пользователя:
на нажатие и отпускание любой из кнопок мыши,
перемещение курсора мыши
нажатие клавиш клавиатуры.
При извещении о нажатии клавиши методу передается код нажатой клавиши, а при передвижении мыши - координаты ее положения.
По умолчанию, форма и компоненты не отвечают ни на какое заранее установленное событие. Чтобы приложение реагировало на определенные события, должен быть написан код (метод), определяющий его реакцию на данное событие. Для этого Delphi в разделе interface класса формы добавит строку с заголовком метода обработки события и в разделе реализации implementation разместит заголовок метода и пустой блок для реализации этого метода.
- Объектно-ориентированный анализ
- Объектно-ориентированное программирование.
- Объектно-ориентированное проектирование.
- Основные понятия объектно-ориентированного проектирования.
- Классы и объекты в Object Pascal.
- Важнейшие принципы объектно-ориентированного программирования.
- Составляющие класса.
- Объекты
- Создание и уничтожение объектов.
- Наследование конструкторов и деструкторов.
- Свойства и инкапсуляция.
- Статические методы.
- Полиморфизм. Виртуальные и динамические методы.
- Абстрактные методы.
- Перекрытие виртуальных и динамических методов.
- Как устроен объект изнутри
- Перезагрузка методов.
- Задача с использованием полиморфизма
- Области видимости.
- Создание класса комплексных чисел.
- Создание класса векторов
- Объект-список
- Модуль по работе со списками
- Основная программа по работе с объектами-списками
- Система программирования Delphi
- Терминология Delphi.
- Первые шаги визуального программирования в среде Delphi.
- Иерархия компонентов.
- Собственники компонентов
- Элементы управления.
- Компоненты (tComponent)
- Оконные не оконные
- Родительские и дочерние компоненты.
- Объектно-событийное программирование. События
- Реакции на события
- Программирование реакции на событие
- Особенности реализации событий
- Делегирование событий
- Виды событий
- Диалоги. Работа с файлами. Открытие и закрытие файлов с использованием стандартных диалоговых окон.
- TOpenDialog и tSaveDialog – диалоги открытия и сохранения файлов (страница dialogs )
- Компонент класса tform
- Создание и использование форм
- Шаблоны форм
- Программы со многими формами
- Модульный принцип построения программ.
- Программные файлы. Основные типы файлов проекта. Простейшее приложение.
- Структура головного файла проекта.