Создание модуля компонента
В файле заголовка NkEdit.h находится объявление нового класса. В файл реализации NkEdit.cpp помещена функция Register, которая обеспечивает регистрацию, установку значка компонента на указанную вкладку палитры компонентов.
В сформированный C++ Builder шаблон компонента нужно внести дополнения: объявить поля данных, функции доступа к полям данных, свойства и методы. Если на некоторые события компонент должен реагировать не так, как базовый, то в объявление класса нужно поместить объявления соответствующих функций обработки событий.
В листингах 6.3 и 6.4 приведены файлы заголовка и реализации компонента NkEdit после внесения всех необходимых изменений.
Листинг 6.3 .nkedit.h.
#ifndef NkEditH #define NkEditH <strong>#</strong> include <SysUtils.hpp> #include <Classes.hpp> #include <Controls.hpp> #include <StdCTRLs.hpp> class PACKAGE TNkEdit: public TEdit { private: bool FEnableFloat; // разрешен ввод дробного числа // диапазон float FMin; // нижняя граница float FMax; // верхняя граница /* функция SetNumb используется для изменения содержимого поля редактирования */ void __fastcall SetNumb(float n); /* Функция GetNumb используется для доступа к полю редактирования */ float __fastcall GetNumb(void); /* эти функции обеспечивают изменение границ диапазона допустимых значений */ bool __fastcall SetMin(float min); bool __fastcall SetMax(float max); protected: public: __fastcall TNkEdit(TComponent* Owner); // конструктор /* Свойство Numb должно быть доступно только во время работы программы. Поэтому оно объявлено в секции public. Если надо, чтобы свойство было доступно во время разработки формы и его значение можно было задать в окне Object Inspector, то его объявление нужно поместить в секцию published */ __property float Numb = {read = GetNumb }; //, write = SetNumb}; // Функция обработки события KeyPress DYNAMIC void __fastcall KeyPress(char Skey); published: // объявленные здесь свойства доступны в Object Inspector __property bool EnableFloat = { read = FEnableFloat, write = FEnableFloat }; __property float Min = {read = FMin, write = SetMin }; __property float Max = {read = FMax, write = SetMax }; }; #endif