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


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


Методы чтения и записи замещают имена членов данных в атрибутах read и write объявления свойства. Вне зависимости от конкретной реализации методов, они должны быть объявлены как приватные, а производные компоненты должны использовать наследованные методы для чтения и записи значений свойства. Объявление методов приватными защищает пользователя производной компоненты от случайного вызова неадекватных методов, модифицирующих свойства не так, как ожидалось.

Значение свойства по умолчанию представляет собой именно то начальное значение инициализации свойства, которое устанавливает конструктор данной компоненты. C++Builder использует объявленное значение свойства по умолчанию default, чтобы определить, следует ли сохранять свойство в файле формы с расширением .dim (если атрибут stored явно не запрещает это).

Листинг 6.3 объявляет компоненту с единственным свойством IsTrue, имеющим значение по умолчанию

true, а также конструктор, который устанавливает это значение при инициализации компонентного объекта. Заметим, что если свойство имеет значение по умолчанию false, то не нужно явно устанавливать его в конструкторе, поскольку все объекты (включая компоненты) всегда инициализируют свои члены данных значением 0, т.е. false.

class TMyComponent : public TComponent { private:

Boolean FIsTrue;

public:

virtual _fastcall TMyComponent(TComponent* AOwner);

_J?ublished:

_property Boolean IsTrue =

{ read=FIsTrue, write=FIsTrue, default=true };

};

_fastcall TMyComponent::

TMyComponent (TComponent* AOwner) : TComponent (AOwner) {

FIsTrue = true;

}

Листинг 6.3. Установка конструктором значения свойства по умолчанию

6.3.2.2 Свойства обеспечивают доступ к членам данных

Существует два способа, посредством которых свойства обеспечивают доступ к внутренним членам данных компонент: прямой или косвенный посредством методов чтения/записи.

class _declspec(delphiclass) TCustomEdit;

class _declspec(pascalimplementation) TCustomEdit :

public Controls::TWinControl { private:

int FMaxLength;




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



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