Повторное использование разработанных кодов____________________419

_fastcall TEditLetNum(TComponent* Owner) ;

_published:

};

//———————————————————————-

ttendif

Файл EditLetNum.cpp:

//——————————————————

#include <vcl.h>
ttpragma hdrstop

^include "EditLetNum.h"
ttpragma package(smart_init)

//—————————————————————

// ValidCtrCheck is used to assure that the components created

// do not have any pure virtual functions.

//

static inline void ValidCtrCheck(TEditLetNum *)
{

new TEditLetNum(NULL);

}

//———————————————————————-

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

//————————————————————————-

namespace Editletnum
(

void _fastcall PACKAGE Register!)
<

TComponentClass classes[1] = {_classid(TEditLetNum)
RegisterComponents("MyComponents", classes, 0) ;

//-

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

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

В процедуре регистрации Register первый оператор создает массив регистри-
руемых компонентов classes типа TComponentClass и заносит в него регистрируе-
мый компонент. Если бы вы создали два компонента(пусть имя второго из них ТЕ-
dit2), регистрируемых на одной странице библиотеки, вы могли бы занести их в
массив оператором:

TComponentClass classes[2] = {_classid(TEditLetNum),
_classid(TEdit2));

Следующий оператор процедуры регистрации регистрирует функцией Regis-
terComponents компоненты, занесенные в classes (второй параметр функции) на

14*