Иллюстрированный самоучитель по C++ Builder

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

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

Чтобы начать работу над новым компонентом, надо активизировать процесс создания нового приложения (команда File › New › Application), в меню Component выбрать команду New Component и в поля диалогового окна New Component (рис. 6.1) ввести информацию о создаваемом компоненте.

Иллюстрированный самоучитель по C++ Builder › Компонент программиста › Создание модуля компонента
Рис. 6.1. Начало работы над новым компонентом

В поле Ancestor type надо ввести базовый тип создаваемого компонента. Для разрабатываемого компонента базовым компонентом является стандартный компонент Edit (поле ввода-редактирования). Поэтому базовым типом разрабатываемого компонента является тип TEdit.

В поле Class Name необходимо ввести имя класса разрабатываемого компонента (например, TNkEdit). Вспомните, что в C++ Builder принято соглашение, согласно которому имена типов должны начинаться буквой т. В поле Palette Page нужно ввести имя вкладки палитры компонентов, на которую будет помещен значок компонента. Название вкладки палитры компонентов можно выбрать из раскрывающегося списка. Если в поле Palette Page ввести имя еще не существующей вкладки палитры компонентов, то непосредственно перед добавлением компонента вкладка с указанным именем будет создана.

В поле Unit file name находится автоматически сформированное имя файла модуля создаваемого компонента. C++ Builder присваивает модулю компонента имя, которое совпадает с именем типа компонента, но без буквы т. Щелкнув на кнопке с тремя точками, можно выбрать каталог, в котором должен быть сохранен модуль компонента.

В результате щелчка на кнопке ОК будет сформирован модуль компонента, состоящий из двух файлов: файла заголовка (листинг 6.1) и файла реализации (листинг 6.2).

Листинг 6.1. Файл NkEdit.h.

#ifndef NkEditH
 <strong>#</strong> define NkEditH
 <strong>#</strong> include <SysUtils.hpp>
#include <Classes.hpp>
 <strong>#</strong> include <Controls.hpp>
<strong>#</strong> include <StdCTRLs.hpp>
class PACKAGE TNkEdit: public TEdit {
private: protected: public:
__fastcall TNkEdit(TComponent* Owner);
__published:
};
#endif

Листинг 6.2. Файл NkEdit.cpp.

<strong>#</strong> include <vcl.h>
 <strong>#</strong> pragma hdrstop
 <strong>#</strong> include "NkEdit.h"
#pragma package(smart_init)
static inline void ValidCtrCheck(TNkEdit *) {
new TNkEdit(NOLL); }
__fastcall TNkEdit::TNkEdit(TComponent* Owner)
: TEdit(Owner) { }
namespace NkEdit {
void __fastcall PACKAGE Register()
{
TComponentClass classes[l] = {__classid(TNkEdit)};
RegisterComponents("Samples", classes, 0); } }
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.