Создание заготовки для нового компонента

После выбора класса-предка для компонента можно приступать к созданию модуля компонента. Создание модуля (заготовки) для нового компонента можно выполнить путем вызова окна Delphi, которое называется экспертом компонентов(Component Expert).Данное окно можно вызвать путем выбора в главном меню Delphi пункта Component / New Component(Компонент / Новый компонент) или File / New / Other и в появившемся окне выбрать Component. При этом появляется окно, изображенное на рисунке 1.

Рис. 1. Эксперт для создания нового компонента.

В диалоге в поле Ancestor typeнужно указать имя класса-предка для нового компонента. Это поле ввода содержит в выпадающем списке все зарегистрированные классы библиотеки VCL. Предположим, что мы будем создавать компонент, предком которого является кнопка TButton. Для этого выберем в выпадающем списке класс TButton. Поле Class Nameпредназначено для ввода имени нового класса. Пусть в нашем случае это будет новый класс TMyButton. Поле Palette Pageпоказывает, на какой вкладке палитры компонентов будет расположен новый компонент после его регистрации. Оставим в этом поле значение, предлагаемое Delphi по умолчанию Samples. Два следующих поля Unit file name и Search pathзаполняются средой Delphi самостоятельно, но разработчик может их изменить. В поле Unit file nameуказывается имя модуля регистрации (полный путь к файлу с расширением pas, в котором содержится процедура регистрации). В поле Search path указываются пути поиска модуля регистрации.

После заполнения полей данного окна нажимаем кнопку ОК, и Delphi автоматически создаст заготовку модуля нового компонента:

unit MyButton;

interface

uses

SysUtils, Classes, Controls, StdCtrls;

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.

Модуль содержит декларацию нового класса и процедуру его регистрации в Палитре Компонент. В процедуре RegisterComponentsпервый параметр - имя страницы (можно указать свое имя - появится новая страница); второй параметр - множество объектов для регистрации.