Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Л16.doc
Скачиваний:
1
Добавлен:
11.09.2019
Размер:
278.02 Кб
Скачать

2. Структура класу компонента

Заготовка модуля компонента, створена в результаті вказаних раніше дій, має наступний вигляд.

Файл EditLetNum.h:

#ifndef EditLetNumH

#define EditLetNumH

//

#include <SysUtils.hpp>

#include <Controls.hpp>

#include <Classes.hpp>

#include <Forms.hpp>

#include <StdCtrls. hpp>

//

class PACKAGE TEditLetNum : public Edit

{

private:

protected:

public:

__fastcall TEditLetNum(TComponent* Owner);

__published:

};

#endif

Файл EditLetNum.cpp:

#include <vcl.h> #pragma hdrstop

#include "EditLetNum.h"

#pragma package(smart init)

// ValidCtrCheck is used to assure // that the components created do not have

// any pure virtual functions.

// (Функція ValidCtrCheck використовується для перевірки того

// що компонент не містить чистих віртуальних функцій)

static inline void ValidCtrCheck{TEditLetNum *)

{

new TEditLetNum(NULL);

}

_fastcall TEditLetNum::TEditLetNum(TComponent* Owner) : TEdit(Owner)

{

}

namespace Editletnum

{

void _fastcall PACKAGE Register()

{

TComponentCIass classes[1] = { classid(TEditLetNum)};

RegisterComponents("Мої компоненти", classes, 0);

}

}

Власне кажучи, в цій заготівлі доки тільки каркас класу майбутнього модуля. Файл EditLetNum.cpp містить три процедури: ValidCtrCheck, конструктор TEditLetNum і Register. Процедура ValidCtrCheck носить допоміжний характер і вводиться, щоб перевіряти, чи не містить компонент чистих виртуальних функцій. Тіло конструктора TEditLetNum доки порожнє. А процедуру Register, реєструючу компонент на заданій сторінці бібліотеки, давайте розглянемо детальніше.

Код реєстрації компонента починається з оператора namespace. Ключове слово namespace встановлює локальність імен цієї процедури реєстрації. Після цього ключового слова слідує ім'я файлу, що містить компоненти. Ім'я пишеться символами в нижньому регістрі, окрім першої заголовної букви.

У процедурі реєстрації Register перший оператор створює масив реєструємих компонентів classes тнпа TComponentClass і заносить в нього реєструємий компонент. Якби ви створили два компоненти (нехай ім'я другого з них TEdit2), реєстрованих на одній сторінці бібліотеки, ви моглн би занести їх в масив оператором:

TComponentClass classes[2] = {__classid(TEditLetNum)

__classid(TEdit2)};

Наступний оператор процедури реєстрації реєструє функцією RegisterComponents компоненти, занесені в classes (другий параметр функції) на сторінці Мої компоненти (перший параметр). Останній параметр є по-следним індексом масиву реєстрованих компонентів.

Розглянемо коротко опис класу в заголовному файлі EditLetNum.h. Ви бачите у ньому розділи private, protected, public і published. Вони визначають чотири варіанти доступу до змінних, процедур і функцій:

private (закриті) - процедури і функції, визначені таким чином, доступні тільки в межах цього модуля.

рrotected (захищені) - процедури і функції, визначені таким чином, доступні в класах нащадків.

public (відкриті) - ці процедури і функції доступні скрізь.

рublished (опубліковані) - процедури і функції доступні скрізь і мають зв'язок з середовищем розробки C++Builder, що забезпечує виведення на екран в Інспекторові Об'єктів сторінок інформації про властивості і події.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]