Главная » Delphi » Разработка компонентов VCL

0

Концепция разработки компонентов

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

Решение о необходимости создания компонента

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

•  Если необходимо разработать новый элемент пользовательского интерфейса и в дальнейшем применять его в разных приложениях.

•    Если нужно сделать приложение устойчивым к ошибкам, разделив его логиче

ски на модули, построенные на основании объектно ориентированных классов.

•  Если среди  существующих  компонентов Delphi  и элементов ActiveX нет такого, который полностью удовлетворял бы всем требованиям.•  Если существуют потенциальные пользователи создаваемого компонента и его можно  распространить среди  других программистов либо за деньги, либо ради собственного удовольствия.

•    Если хочется глубже разобраться в Delphi, библиотеке VCL и функциях интер

фейса API Win32.

Лучше всего  учиться  создавать пользовательские компоненты у тех,  кто  их изобрел. Исходный код библиотеки VCL — настоящая сокровищница знаний, и мы настоятельно рекомендуем изучить его, особенно тем, кто решил серьезно заняться разработкой компо нентов. Исходный код библиотеки VCL присутствует в двух версиях Delphi: в Professional и Enterprise.

Многих  пугает сама мысль  о создании собственных компонентов, и, поверьте, со вершенно напрасно. Легко  это или тяжело — зависит только  от вас. Конечно, сущест вуют очень  сложные компоненты, но,  в принципе, создать  полезный компонент до вольно  просто.

Этапы разработки компонента

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

•    Прежде  всего  нужна  идея  полезного  компонента,  отличного  от  уже  сущест

вующих.

•  Затем следует построить алгоритм, по которому компонент будет работать.

•   Начните с подготовительных мероприятий,  не  бросайтесь сразу  с головой в проектирование компонента. Спросите себя: “Что  нужно сделать, чтобы  заста вить данный компонент функционировать?”.

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

•    Сначала проверьте компонент на пробном проекте. Если добавить его в палит

ру компонентов сразу, то вы, вероятно, пожалеете об этом.

•    Наконец, добавьте компонент и его пиктограмму в палитру компонентов. По

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

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

2.  Создание модуля компонента.

3.  Добавление в новый  компонент свойств, методов и событий.

4.  Проверка.

5.  Регистрация компонента в среде Delphi.

6.  Создание файла  справки для компонента.В настоящей главе рассматриваются лишь первые пять  этапов, а создание файлов справки выходит за ее пределы. Но  это  не означает, что  шестой этап  менее  важен, чем предыдущие. Рекомендуем изучить  наиболее популярные средства создания фай лов справки программ. Компания Borland также поместила необходимую информацию по данному вопросу  в собственную интерактивную справочную систему. Обратитесь к разделу  “Providing Help  for  Your  Component”  (“Создание справочной  информации для пользовательского компонента”) этой системы.

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

В главе 10, “Архитектура компонентов: VCL и CLX”, обсуждалась  иерархия компо нентов библиотеки VCL и назначение различных классов,  расположенных на разных уровнях  этой  иерархии. Были  описаны четыре базовых класса,  от  которых может происходить класс компонента: стандартные элементы управления, пользовательские элементы управления, визуальные элементы управления и невизуальные компоненты. Например, если  достаточно просто расширить поведение существующего  элемента Win32, скажем  TMemo, то можно  создать  компонент, расширив возможности стан дартного класса.  Если  необходимо создать  абсолютно новый класс  компонента, то придется иметь  дело  с пользовательским элементом управления. Компоненты на ос нове  визуальных элементов применяются для создания визуальных эффектов, реали зуемых без использования ресурсов Win32. И, наконец, если необходимо создать  ком понент, не имеющий визуального представления в форме готового приложения, но, тем не менее, присутствующий в окне  инспектора объектов, то разработать придется невизуальный  компонент. Различные классы  библиотеки VCL представляют разные типы  компонентов. Возможно, придется вернуться к главе  10,  “Архитектура  компо нентов: VCL и CLX”, если  концепции понятны не до конца.  В табл. 11.1 содержится лишь краткий перечень.

Таблица 11.1. Базовые классы компонентов  библиотеки VCL

Класс VCL                                   Тип пользовательских элементов управления

TObject          Хотя классы,  непосредственно происходящие от класса TOb- ject, не являются компонентами, тем не менее  они за служивают    внимания.   Класс    TObject используется   как базовый для создания многих  объектов, с которыми едва ли придется  встречаться  в  процессе  разработки.  Например класс TIniFile

TComponent           Это исходная точка  для многих  невизуальных компонентов.

Основное их  достоинство —  это  возможность самостоятель но загружать и сохранять потоки данных  в интегрированной среде Delphi  во время  разработки

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

Класс VCL                                   Тип пользовательских элементов управления

TWinControl      Это  базовый  класс  для  создания  всех  компонентов,  обла дающих  дескриптором окна.  Данный класс содержит общие свойства и события оконных элементов управления

TCustomControl   Этот класс происходит от класса TWinControl. Он обладает свойством Canvas и содержит метод  Paint(), предоставляя расширенный контроль над внешним видом компонента. Данный класс используется, в основном, для создания поль зовательских оконных элементов

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

TComponentName   Некоторый существующий  класс,  подобный TEdit, TPanel или TScrollBox. Если необходимо расширить поведение какого нибудь элемента управления, то в качестве базового класса   для  своего   компонента  используйте  уже  существу ющий,  например TEdit или иной  подходящий пользователь ский класс, а не создавайте новый элемент “с нуля”. Большин ство  создаваемых компонентов попадет именно в эту категорию

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

1

ях, пусть даже в чисто  экспериментальных целях.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии