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

Inherited Create;

FProp:=TAnyClass.Create; // Инициализируем поле свойства

End;

Destructor TPropClass.Destroy;

Begin

FProp.Free; // Разрушаем поле свойства

Inherited Destroy;

End;

Procedure TPropClass.SetPropObj(Obj: TAnyClass);

Begin

If Assigned(Obj) Then FProp-Assign(Obj); // Присваиваем значение полю

End;

• Объявляем переменные обоих классов и инициализируем их:

Var AnyObj: TAnyClass; // Переменная исходного класса

Obj: TPropClass; // Переменная со свойством-объектом

Begin

AnyObj :=TAnyCIass.Create;

Obj :=TPropClass.Create;

• Примеры доступа к свойству-объекту могут иметь следующий вид:

AnyObj.Fld:=Editl.Text; // Ввод значения в поле исходного объекта

Labell.Caption:=AnyObj.Fld; // Вывод введенного значения

Obj.Prop:=AnyObj; // Присвоение значения свойству Label2.Caption:=Obj.Prop.Fld; // Вывод значения поля через свойство

6.5. Команды Default, NoDefault и Stored

Эти команды называют спецификаторами хранения. Они не оказывают никакого действия на выполнение программы, но управляют способом со­хранения значений свойств из раздела Published в Dfin-файле.

а) Команда Default позволяет указать значение, каким конструктор клас­са будет инициализировать соответствующее поле. В противном случае, как уже указывалось ранее в §2.2, оно будут инициализировано нулевым значе­нием.

Примечания:

Этот раздел можно указывать только для порядковых типов данных и множества. Допустим он и для данных типа указатель с единственным значением Nil, поэтому фактически нецелесообразен.

Пункт со значением по умолчанию сам по себе не устанавливает зна­чение свойства - ответственность за это лежит на программисте, и необ­ходимо в конструкторе класса явно написать оператор, присваивающий свойству предусмотренное по умолчанию значение.

Команда Default лишь информирует транслятор о том, каким значе­нием будет инициализировано свойство. Это позволяет при считывании и записи в файлы формы и компонентов узнавать, нужно ли записывать в файл *.Dfm значение свойства. Если текущее значение свойства такое же, как в команде Default, то его можно не записывать, уменьшая таким обра­зом размер файла.

Свойство, определенное в разделе Published, no умолчанию всегда со­храняется в ресурсном файле.

Для свойств-массивов команда Default объявляет соответствующее свойство-массив свойством по умолчанию, что позволяет упростить дос­туп к элементам такого массива. При обращении к такому свойству его имя можно не упоминать, а индекс[ы] в квадратных скобках указывать у имени объекта. Очевидно, что только одно свойство-массив класса и его потомков может иметь такую команду. В классах-потомках нельзя отме­тить эту команду.

Type

TAnyClass=Class // Объявление нового класса ...

// Все необходимые объявления

Property Strings[Index: Integer]: String Read GetStr Write SetStr; Default;

End;

Var AnyObject: TAnyClass; // Объявление переменной

Begin

AnyObject.Strings[l]:=='Первый и стандартный способ обращения';

AnyObject[2]:='BTOpou способ - при указании свойства Default';

End.

б) Команда NoDefault используется для сообщения о том, что не суще­ствует никакого значения, действующего по умолчанию. Обычно она приме­няется для наследованных свойств, которые имели заданное по умолчанию значение, и для тех же типов данных, что и команда Default.

в) Команда Stored используется для того, чтобы указать на необходи­мость сохранения значения свойства. За командой Stored могут стоять либо ключевые слова: True False, либо указана <переменная\метод-функция с ло­гическим результатов. Часто используется для свойств, объявляемых в разделе Published и всегда сохраняемых в ресурсном файле.