Энциклопедия C++ Builder


ИСПОЛЬЗОВАНИЕ И СОЗДАНИЕ ВИЗУАЛЬНЫХ КОМПОНЕНТ - часть 12


void _fastcall SetMaxLength(int Valued-protected:

property int MaxLength = { read=FMaxLength, write=SetMaxLength, default=false };

};

Листинг 6.4. Способы доступа свойства к членам данных.

Листинг 6.4 содержит код объявления компоненты TCustomEdit, взятый из VCL. TCustomEdit — это базовый класс для таких компонент редактирования как, TEdit и TMemo.

TCustomEdit имеет внутренний член данных FMaxLength типа

int, который определяет максимальное значение длины символьной строки, которую пользователь может ввести в данный элемент управления. Вместо прямого присваивания FMaxLength этого значения, выполняется присваивание свойству MaxLength, которое обеспечивает доступ к члену FMaxLength.

Определение свойства MaxLength содержит тип, имя свойства и объявления атрибутов: прямого чтения члена данных FMaxLength,

косвенного присваивания свойству

MaxLength посредством метода записи SetMaxLength и значения по умолчанию 0.

6.3.2.3 Методы записи и чтения свойств

Метод записи имеет единственный параметр того же типа, что и свойство, и не возвращает значения. По соглашению, название функции образуется из слова "Set", за которым следует имя свойства. Например, метод записи свойства MaxLength имеет имя SetMaxLength и тип void. Метод записи свойства присвоит значение своего параметра соответствующему члену данных. Одна из причин использования метода записи — вызвать побочный эффект как результат операции присваивания свойству.

Листинг 6.5 представляет пример реализации ранее объявленного метода записи SetMaxLength.

void TCustomEdit::SetMaxLength(int Value) {

if (FMaxLength i= Value) {

FMaxLength = Value;

if (HandleAllocated) SendMessagefHandle, EM_LIMITTEXT, Value, 0);

} }

Листинг 6.5. Пример реализации метода записи.

Метод SetMaxLength проверяет, не присваивается ли свойству то значение, которое уже в нем хранится. Если нет, то новое значение присваивается члену данных FMaxLength. Кроме того, метод выдает сообщение EM_LIMITTEXT Windows в то окно, которое инкапсулирует компонента TCustomEdit. По этому сообщению устанавливается верхний предел длины текста, который пользователь может ввести в данный элемент управления. Последнее действие представляет собой простейший вариант побочного эффекта, вызываемого методом записи свойства.




Начало  Назад  Вперед



Книжный магазин