Після того як визначено батьківський клас компонента, слід створити окремий модуль компонента. У цьому модулі повинен оголошуватися новий компонентний клас і процедура його реєстрації в Delphi.
Створити компонентний модуль можна двома способами: вручну або за допомогою експерта створення компонента. Останній спосіб краще, оскільки знижує обсяг ручного кодування. Розглянемо роботу з експертом на прикладі створення модуля для описаного в 5.1.1 компонента FarClock.
1. Виберіть в головному меню Delphi команду Component ► New Component.
2. У поле Ancestor type діалогового вікна потрібно вказати ім'я батьківського класу. Введіть символи TCustomL. Зверніть увагу на динамічну зміну стану поля зі зворотним відліком - експерт пропонує вже відомі класи в якості батьківського. Після введення в поле з'явиться напис:
Зауважте, що в Delphi версій 6 і 7 є дві бібліотеки компонентів: VCL і CLX. Обидві містять майже ідентичні компоненти, але перша призначена для роботи компонентів під управлінням Windows, а друга - під управлінням Linux. Клас TCustomLabel зареєстрований в обох бібліотеках, але стоїть в квадратних дужках ім'я QStdCtrls свідчить про те, що цей клас буде обраний в CLX (модулі цієї бібліотеки мають префікс Q). Якщо залишити поле Ancestor type таким, буде створений компонент для Linux, і спроба розмістити його на формі звичайного проекту (для Windows) викличе повідомлення про помилку. Щоб цього не сталося (у цій книзі розглядаються тільки компоненти для Windows), видаліть посилання [QStdCtrls] з поля Ancestor type.
3. Поле Class name призначене для вказівки імені новостворюваного компонентного класу. Введіть в ньому ім'я TFarClock.
4. У полі Palette page потрібно ввести ім'я тієї вкладки Палітри компонентів Delphi, на якій буде розташовуватися новий компонент. Введіть в ньому ім'я Far - цієї вкладки на палітрі немає, але вона буде створена після реєстрації компонента.
5. Остаточний вигляд вікна експерта показаний на рис. 5.1. Клацніть на кнопці ОК.
В результаті ми отримаємо заготовку для модуля компонента, показану в лістингу 5.2.
Лістинг 5.2 (продовження) type TFarClock = class (TCustomLabel) private
/ Public declarations> published
Мал. 5,1. Вікно експерта створення нового компонента