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

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

В файле заголовка 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
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.