Создание
заготовки компонента
Итак, вы выбрали класс-предок
для вашего компонента. Теперь можно приступать к созданию модуля вашего компонента.
Создание модуля (заготовки) для нового компонента можно выполнить путем вызова
окна Kylix, которое называется экспертом компонентов (Component Expert).
Дан-ное окно можно вызвать путем выбора в главном меню Kylix пункта Component/New
Component. При этом появляется окнo, изображенное на рис. 19.1.
Рассмотрим данное окно.
Итак, первое поле ввода Ancestor type предназначено для ввода класса
— предка для нового компонента. Данное поле ввода содержит в выпадающем списке
все зарегистрированные классы библиотеки CLX. Предположим, что мы будем создавать
компонент, предком которого является кнопка TButton
. Для этогo
выберем в выпадающем списке класс TButton
. Следующее поле Class
Name предназначено для ввода имени нового класса. Пусть в нашем случае это
будет новый класс TMyButton
. Заметьте, что та умолчанию Kylix заполняет
это поле именем класса-предка с добавлением порядкового номера (в нашем случае
TButton1
). Следующее поле Palette Page показывает, на какой
вкладке палитры компонентов будет расположен новый компонент после его регистрации.
Оставим в этом поле значение, предлагаемое Kylix по умолчанию Samples
.
Следующие два поля Unit file name и Search path заполняются средой Kylix
самостоятельно, но разработчик может их изменить. Мы не будем этого делать в
нашем примере. В результате
окно эксперта компонентов должно быть заполнено так, как показано на рис. 19.2.
Рис.
19.1. Окно эксперта компонентов
Рис.
19.2. Заполненное окно эксперта компонентов
После заполнения полей
данного окна нажимаем кнопку ОК, и Kylix автоматически создаст заготовку
модуля вашего компонента. Модуль заготовки для нашего примера представлен в
листинге 19.1.
Листинг 19.1.Модуль
заготовки нового класса
unit QMyButton; interface
uses
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls;
type
TMyButton = class(TButton) private
{ Private declarations } protected
{ Protected declarations } public
{ Public declarations } published
{ Published declarations } end; procedure Register;
implementation
procedure Register; begin
RegisterComponents('Samples', [TMyButton]); end;
end.
Итак, заготовка для нового
компонента готова. Она не содержит никаких новых свойств, методов и событий
для нового компонента. Нужно отметить, что данный компонент уже имеет все свойства,
события и методы, которые определены для класса TButton
.
Рассмотрим теперь основные
типы методов компонента.
Все методы могут быть одного
из нескольких типов: статические (static), виртуальные (virtual),
динамические (dynamic) или методы-сообщения (message). По умолчанию
методу присваивается статический тип.