Руководство по написанию компонентов Delphi

Дельфи имеет открытую архитектуру, что позволяет любому программисту совершенствовать данную среду обработки по своему желанию. К стандартным наборам компонентов можно добавить множество своих, заметно упрощающих жизнь. Именно для такой простоты и нужны дополнительные компоненты.

Перед созданием нового компонента, нужно решить вопрос о том, для чего он нужен. Далее необходимо продумать его свойства и те функции, которыми должен обладать компонент. Потом нужно определить, наследником какого класса он будет. Для этого есть разные пути: взять уже готовый компонент  либо создать новый класс.

По мнению участников форума программистов, создание нового класса подразумевает четыре пути:

  • Создание TWinControl – управление Windows-элемента;

  • Создание TGraphicControl – графического элемента управления;

  • Создание TCustomControl - нового класса или элемента управления;

  • Создание TComponent – невидимого компонента.

Разберемся теперь с визуальными и невизуальными компонентами. Первые видны во время работы приложения, поэтому пользователь может с ними взаимодействовать, вторые же видны только при разработке приложения (Design-Time), в то же время во время работы приложения (Run-Time) пользователю их не видно.

Для начала создадим пустой модуль компонента. В данной статье исходим из устройства Дельфи 3, однако в остальных версиях данный процесс не сильно отличается. Для наибольшей простоты создадим кнопку, показывающую информацию о количестве нажатий по ней.

Для написания компонента, делаем так:

  • Закрываем все проекты, разработанные ранее;

  • В главном меню выбираем Component -> New Component;

  • В открывшемся окне “New Component” в поле Ancestor Type выбираем класс компонента – Tbutton;

  • В поле Class Name набираем имя класса, при этом имя обязательно должно начинаться с буквы “T”;

  • В поле Palette Page пишем имя закладки, на которой данный компонент появится после установки. Далее вводим туда MyComponents;

  • Поле Unit File Name программа заполнит автоматически, который будет зависеть от имени выбранного компонента;

  • Поле Search Path не изменяется.

Далее необходимо разобраться в директивах.

Директива Private, в которую пишутся все скрытые поля, которые понадобятся для создания самого компонента. Здесь же описываются другие процедуры и функции, невидимые пользователю и которые необходимы для работы компонента. Директива Protected – здесь обычно пишут различные обработчики для мыши и клавиатуры. В директиве Public указываются процедуры и функции компонента, доступные пользователю. Для примера приведем функцию ShowCount, которая выведет сообщение о том, сколько раз пользователь нажал на данную кнопку.

Последняя директива Published используется для объявления свойств и методов компонента, доступных пользователю. Для появления компонента на форме нужно описать весь метод создания компонента, также можно прописать и деструктор, хотя это не обязательно. Немаловажным является то, что если нужно, чтобы какие-либо свойства компонента были видны в Инспекторе Объектов (Object Inspector), то нужно описать данные свойства в директиве Published (подробности см. на delphi форуме).

Далее необходимо установить созданный компонент. В главном меню нажимаем Component -> Install Component, открывается окно Install Component, в котором присутствуют две закладки: Into new Package и Into exsisting Package. Таким образом, предлагается установить компонент в новый либо в существующий пакет. Выбираем второе.

В поле Unit File Name заносим имя модуля с указанием пути к нему, хотя гораздо проще нажать на кнопку Browse и выбрать нужный файл. В Search Path ничего не меняем, Делфи сама занесет туда все, что необходимо. В поле Package File Name выбираем имя нужного пакета, куда будет установлен компонент. Далее нажимаем кнопку Ok и читаем предупреждение Package dclusr30.dpk will be rebuilt. Continue? Делфи интересуется о том, можно ли изменить пакет, необходимо согласиться с ней и любоваться результатом.