Добавляет в run time новое свойство в объект.

Вы можете использовать ADDPROPERTY( ) для добавления новых свойств и их значений в действительные объекты Visual FoxPro, включая те, которые созданы из классов Visual FoxPro, классов COM и с помощью команды SCATTER...NAME.

ADDPROPERTY(oObjectName, cPropertyName, [, eNewValue ])

Параметры

oObjectName

Указывает имя объекта, которому добавляется новое свойство.

Если oObjectName не является действительным объектом, Visual FoxPro генерирует соответствующее сообщение.

cPropertyName

Указывает имя нового свойства, добавляемого объекту.

Если свойство с указанным вам именем еще не существует, то свойство создается и добавляется.

eNewValue

Указывает значение, которое присваивается новому свойству при его создании.

Если вы опустите eNewValue, а свойство уже существует, Visual FoxPro оставляет значение свойства неизмененным. Если вы опустите eNewValue, а свойство является новым, Visual FoxPro устанавливает значение нового свойства в False (.F.).

Expand image Возвращаемое значение

Логический тип данных. В приведенной ниже таблице описываются возвращаемые значения для ADDPROPERTY( ) и поведения для случая, когда вы пытаетесь добавить свойство, когда оно уже существует у объекта.

Возвращаемое значение Описание

True (.T.)

Когда ADDPROPERTY() успешно добавила свойство.

Когда новое свойство представляет собой массив, а массив уже существует, ADDPROPERTY() изменяет размер массива в соответствии с размером, указанным в cPropertyName. Если указали значение в eNewValue, то это значение будет присвоено всем элементы массива. Если вы опустили eNewValue, то всем элементам массива присваивается значение False (.F.).

Если новое свойство не является массивом, но уже существующее свойство является массивом, тогда свойство остается массивом и массив сохраняет свои размеры. Если вы указали значение для eNewValue, то всем элемента такого массива будет присвоено указанное значение. Если же вы опустили eNewValue, то всем элементам массива присваивается значение False (.F.).

Если новое свойство не является массивом, и уже существующее свойство не является массивом или является родным свойством Visual FoxPro, но буз признака "только для чтения", то если вы указали значение в eNewValue, то это существующее свойство устанавливается в это значение. Если же вы опустили eNewValue, то существующее свойство остается неизменным.

Если существующее свойство уже является членом объекта, но маркировано как Hidden или Protected, то Visual FoxPro сгенерирует ошибку, "Property name is not found (Error 1734)", и свойству не будет присвоено значение, посланное функцией ADDPROPERTY().

False (.F.)

Когда ADDPROPERTY( ) не смогла добавить свойство.

Если свойство представляет собой массив, а существующее свойство массивом не является, то существующее свойство остается неизменным.

Expand image Примечания

Вы можете свойство в виде массива используя для объекта функцию ADDPROPERTY(). Когда вы делаете это, каждый элемент в массиве инициализиуется значением, предоставленным параметром eNewValue, разумеется в случае, если оно было предоставлено. В противном случае, значение каждого элемента в массиве устанавливается в False (.F.). Для получения более подробной информации о создании в объекте свойства-массива, смотрите раздел Примеры.

Visual FoxPro добавляет новое свойство как свойство Public. Вы н можете указать свойство в виде Protected или Hidden.

Если существующее свойство маркировано как "только для чтения" и является родным свойством Visual FoxPro, например, таким как свойство BaseClass, Visual FoxPro сгенерирует ошибку "Property name is read-only (Error 1743)".

Если имя свойства является недействительным, например, в имени свойства имеются недопустимые символы, то Visual FoxPro сгенерирует ошибку "Incorrect property name (Error 1470)".

Для экземпляров объекта, образованного из классов Visual FoxPro, ADDPROPERTY( ) учитывает установку области видимости, установленную внутренним методом AddProperty. Если метод AddProperty маркировал свойства, как Hidden или Protected, ADDPROPERTY( ) не создает нового свойства и возвращает False (.F.). Если метод AddProperty маркировал свойство как Public (по умолчанию), то ADDPROPERTY( ) создает свойство и возвращает True (.T.). Это защищает оригнальный дизайн класса.

ЗамечаниеЗамечание

Это не применимо к COM-объектам, созданным из классов Visual FoxPro OLEPUBLIC.

ADDPROPERTY() не работает, если используется команда FOR EACH с объектной ссылкой. Однако вы, вместо этой функции можете использовать одноименный метод AddProperty.

Expand imageПримеры

Пример 1

Приведенный ниже пример добавляет новое свойство в объект, созданный командой SCATTER.

  CopyCode imageСкопировать код
USE customers
SCATTER NAME oCust
ADDPROPERTY(oCust,"MyProperty")

Пример 2

Приведенный ниже пример создает для объекта oMyForm свойство-массив и отображает его содержание: 1 и "Two".

  CopyCode imageСкопировать код
oMyForm = CREATEOBJECT('Form')
ADDPROPERTY(oMyForm, 'MyArray(2)', 1)
oMyForm.MyArray(2) = "Two"
CLEAR
? oMyForm.MyArray(1) 
? oMyForm.MyArray(2) 

Expand imageСмотрите также

Справочное руководство

Метод AddProperty
Команда SCATTER
Функция REMOVEPROPERTY( )

Прочие ресурсы

Функции