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

Осталось изменить метод Clear так, чтобы в нем учитывался новый параметр
CanClear:

void _fastcall TEditLetNum::Clear()
{
bool CanClear = true;

if (OnClear) OnClear(this,CanClear);

if (CanClear)
{

TEdit::Clear();     // Вызов родительского метода
FModified = false;

)

В этой функции вводится булева переменная CanClear. При наличии обработ-
чика пользователя он вызывается и CanClose передается в этот обработчик в каче-
стве второго параметра. Затем в зависимости от значения CanClose вызывается
или не вызывается родительский метод очистки OnClear.

Теперь ваш компонент завершен. Полный текст его файлов имеет следующий
вид.

Файл EditLetNum.h:

// Объявление типа события

typedef void _fastcall (_closure *TClear)(System::TObject *Sender,
bool& CanClear) ;

class PACKAGE TEditLetNum : public TEdit

(

private:

// Закрытые элементы-данные класса

bool FEnableLet;

bool FEnableNum;

bool FModified;

TClear FOnClear;

protected:

// Защищенные методы записи

void   fastcall SetEnableLet(bool AEnableLet);

void _fastcall SetEnableNum(bool AEnableNum);

void _fastcall Keypress(char &Key) ;

public:

// Объявление конструктора

_fastcall TEditLetNum(TComponent* Owner);

// Объявление метода Clear
void _fastcall Clear();

// Свойство только времени выполнения

property bool Modified = (read=FModified, default=false);

_published:

// Свойства компонента, включаемые в Инспектор Объектов

property bool EnableLet = {read=FEnableLet, write=SetEnableLet,
default=true) ;

_property bool EnableNum = <read=FEnableNum, write=SetEnableNum,
default=true);

_property TClear OnClear = {read=FOnClear, write=FOnClear) ;

);