- •Объектно-ориентированный анализ
- •Объектно-ориентированное программирование.
- •Объектно-ориентированное проектирование.
- •Основные понятия объектно-ориентированного проектирования.
- •Классы и объекты в Object Pascal.
- •Важнейшие принципы объектно-ориентированного программирования.
- •Составляющие класса.
- •Объекты
- •Создание и уничтожение объектов.
- •Наследование конструкторов и деструкторов.
- •Свойства и инкапсуляция.
- •Статические методы.
- •Полиморфизм. Виртуальные и динамические методы.
- •Абстрактные методы.
- •Перекрытие виртуальных и динамических методов.
- •Как устроен объект изнутри
- •Перезагрузка методов.
- •Задача с использованием полиморфизма
- •Области видимости.
- •Создание класса комплексных чисел.
- •Создание класса векторов
- •Объект-список
- •Модуль по работе со списками
- •Основная программа по работе с объектами-списками
- •Система программирования Delphi
- •Терминология Delphi.
- •Первые шаги визуального программирования в среде Delphi.
- •Иерархия компонентов.
- •Собственники компонентов
- •Элементы управления.
- •Компоненты (tComponent)
- •Оконные не оконные
- •Родительские и дочерние компоненты.
- •Объектно-событийное программирование. События
- •Реакции на события
- •Программирование реакции на событие
- •Особенности реализации событий
- •Делегирование событий
- •Виды событий
- •Диалоги. Работа с файлами. Открытие и закрытие файлов с использованием стандартных диалоговых окон.
- •TOpenDialog и tSaveDialog – диалоги открытия и сохранения файлов (страница dialogs )
- •Компонент класса tform
- •Создание и использование форм
- •Шаблоны форм
- •Программы со многими формами
- •Модульный принцип построения программ.
- •Программные файлы. Основные типы файлов проекта. Простейшее приложение.
- •Структура головного файла проекта.
Программирование реакции на событие
Щелкнув в Инспекторе объектов на странице Events в поле события, получим в программе заготовку метода нужного типа. Пусть, например, на форме Form1 есть текст метки Label1. Тогда для обработки щелчка мышью (событие OnClick) на элементе управления Label1 будет создана заготовка метода TForm1. Label1Click:
Procedure TForm1.Label1Click(Sender: TObject);
Begin
. . . . . .
End;
Метод Label1Click был передан как значение свойству OnClick объекта Label1 стандартного класса TLabel. Теперь остается вписать нужный программный код.
Особенности реализации событий
Сообщения о наступлении события поступают от 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 разместит заголовок метода и пустой блок для реализации этого метода.