Написание своих компонентов для Delphi. Часть 1. Расширение уже имеющихся компонентов

В комплекте поставки Delphi уже имеет очень богатые библиотеки компонентов (VCL, FireMonkey). Но, даже их возможностей не всегда хватает для реализации задуманного. И тогда возникает необходимость создать собственный компонент.

Существует два пути создания собственных компонентов:

  • Расширение возможностей уже имеющегося компонента (по сути, сводится к созданию класса наследника);
  • Написание собственного компонента с нуля.

В этой статье речь пойдёт о первом пути.

В качестве примера рассмотрим создание компонента на основе стандартного компонента VCL TLinkLabel.

Создание каркаса компонента

Выберем в главном меню Component->New Component. В открывшемся окне укажем компонент, на основе которого будем создавать новый. В нашем случае это TLinkLabel.

Выбор базового класса

Далее необходимо указать:

  • Имя компонента;
  • Название раздела в панели компонентов, в котором будет размещаться компонент;
  • Имя модуля с его исходным кодом.

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

Имя компонента

После этого необходимо выбрать, что следует сделать с новым компонентом. Создать модуль или установить в пакет.

Создание модуля

Для всех вновь создаваемых компонентов настоятельно рекомендуется именно создание модуля, так как для них ещё предстоит писать код.

В результате Delphi сформирует каркас для нашего нового компонента.

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

Разработка функционала компонента

Обычный TLinkLabel обеспечивает лишь хранение ссылок и их визуальное отображение. Для открытия ссылки необходимо писать обработчик события OnClick.

Созданный нами компонент будет иметь поведение несколько отличное от оригинала. В нём будет предусмотрен обработчик события OnClick по умолчанию, который будет проверять свойство Caption на наличие в нём HTML тега гиперссылки (тег <a>) и, если он есть открывать эту гиперссылку.

Для этого создадим метод обработчика события. В нём при помощи регулярных выражений выполним необходимые проверки и открытие гиперссылки.

Далее этот метод необходимо назначить в качестве обработчика по умолчанию. Это легко сделать, переопределив конструктор компонента.

Теперь, если в свойство Caption компонента написать тег гиперссылки, он будет найден и ссылка будет открыта.

На этом создание нашего компонента завершено.

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

Подобным образом можно доработать любой компонент VCL, FireMonkey или любой другой библиотеки, где есть такая возможность. Поэтому многие разработчики, которым не достаточно стандартных возможностей библиотек часто этим пользуются, создавая наборы компонентов оптимизированных для собственных нужд.

Примечание:

С полным исходным кодом компонента послужившего примером для данной статьи можнео ознакомиться на GitHub.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *