- •Основы объектно-ориентированного анализа и проектирования Введение в объектно-ориентированное программирование Эволюция разработки программного обеспечения
- •Технологии программирования
- •Основные концепции объектно-ориентированного программирования
- •Реализация объектно-ориентированного подхода Инкапсуляция. Свойства
- •При использовании динамики:
- •Конструкторы объектов
- •Деструкторы объектов
- •Наследование, агрегация
- •Полиморфизм, виртуальные и динамические методы
- •Абстрактные методы
- •Перегрузка методов
- •События и делегирование
- •Приведение объектных типов, операторы is и as
- •Области видимости
- •Перекрытие и переопределение свойств
- •Объектно-ориентированное программирование в Borland Delphi. Применение объектно-ориентированного программирования
- •Иерархия библиотечных классов в Borland Delphi.
- •Создание компонентов в среде Delphi Способы создания компонентов
- •Процесс создания компонентов
- •Создание модуля
- •Создание описания и реализации класса для компонента
- •Тестирование неустановленного компонента
- •Создание графического изображения для компонента
- •Инсталляция и деинсталляция компонента
- •Создание свойств, событий и методов компонентов Работа со свойствами
- •События
- •Обработка сообщений Windows
- •Сообщения Windows
- •Обработчики сообщений Windows
Создание модуля
В состав модуля компонента помимо описания и реализации класса должна входить процедура регистрации Register.
Существуют два способа создания модуля для нового компонента:
· используя Component Wizard (New/Component),
· создание компонента «вручную».
При создании компонента с помощью мастера упрощается начальная стадия создания. В процессе диалога с мастером создания компонентов программист задает следующее:
· класс, от которого компонент порождается,
· имя класса нового компонента — причем только одного,
· имя страницы палитры компонентов, на которой компонент будет размещен,
· имя модуля, в котором будет описан компонент,
· путь к этому модулю,
· имя пакета, в котором будет размещен компонент.
На основе этих данных мастер создает шаблон модуля для компонента. В его состав будут входить заготовка для класса и процедура регистрации компонента, например:
Процедура RegisterComponents регистрирует указанный визуальный компонент (в пример TMyControl) на указанной странице компонентов (в примере это страница Samples). При создании компонента вручную первым шагом создается новый Unit. Далее в нем описывается класс компонента и процедура регистрации. В одном модуле можно разместить несколько компонентов. Также можно добавить компоненты в модуль, созданный автоматически. Процедура RegisterComponents вызываетется один раз для всех компонентов, регистрируемых на одной страницы компонентов. В этом вызове указывается имя страницы и все размещаемые на ней компоненты. Процедура регистрации для случав нескольких компонентов, будет выглядеть, например, следующим образом:
Создание описания и реализации класса для компонента
Создание описания и реализации класса для компонента включает в себя создание перекрытие или переопределение свойств, событий и методов, которые должны обеспечить функциональность компонента, его отображение на экране. Подробно это рассматривается в следующем разделе.
Тестирование неустановленного компонента
В процессе разработки компонента необходимо провести его тестирование, не помещая его на палитру компонентов. Для этого необходимо выполнить следующие действия:
1. Добавить в проект модуль, содержащий компонент;
2. Добавить имя модуля, в котором находится описание компонента, в раздел Uses той формы, где планируется его использование;
3. Добавить поле типа класс нового компонента в раздел public формы;
4. Установить процедуру обработки события OnCreate для формы в котором будет написан код создания и инициализации компонента;
5. Создать компонент в процедуре обработки данного события. В качестве параметра конструктора указывается Self — указатель на объект, который владеет данным компонентом;
6. Установить свойство Parent (указатель на объект, который осуществляет визуальный контроль за компонентом) на форму;
7. Установить остальные свойства компонента.
Таким образом компонент при тестировании без установки создается как обычный класс.
Создание графического изображения для компонента
Каждому компоненту необходима картинка, для представления его на палитре компонентов. Если разработчик компонента не определит собственный рисунок, то Delphi будет использовать рисунок, заданный по умолчанию.
Поскольку картинка для палитры не нужна во время исполнения, нет необходимости прикомпилировать ее к компоненту. Вместо этого создается файл ресурсов для компонента, причем он должен иметь то же имя, что и модуль и расширением .DCR. (dynamic component resource). Действия: Tools/Image Editor; File/New/Component Resours File. Внутри создается по одному изображению на каждый компонент. Каждое изображение представляет собой квадрат 24x24 пиксела. Действия Resours/New/Bitmap. Изображения должны иметь имена, соответствующие именам классов компонентов. Файл ресурсов должен быть помещен в тот же каталог, что и откомпилированные файлы компонента, что позволит Delphi найти его при инсталляции компонента на панели компонентов. Связывание изображения и компонента происходит автоматически по соответствию имен. Например, при создании компонента с именем TMyControl в модуле ToolBox, файл ресурсов будет называться TOOLBOX.DCR. и содержать изображение с именем TMYCONTROL.