点击或拖拽改变大小

Functions.AddProperty 方法

X#
在运行时向对象添加新属性。
您可以使用 AddProperty() 向 X# 对象添加属性和属性值,包括从 X# 类、COM 类和 SCATTER...NAME 命令创建的对象。

命名空间:  XSharp.VFP
程序集:  XSharp.VFP (在 XSharp.VFP.dll 中) 版本:2.22 GA
语法
 FUNCTION AddProperty(
	oObjectName AS Object,
	cPropertyName AS STRING,
	 eNewValue AS USUAL
) AS LOGIC
查看代码

参数

oObjectName
类型:Object
指定要向其添加属性的对象名称。
如果 oObjectName 不是有效的对象,X# 会生成相应的消息。
cPropertyName
类型:String
指定要添加到对象的新属性的名称。
如果您指定的属性名称不存在,该属性将被创建并添加。
eNewValue
类型:__Usual
指定要为新属性设置的值。
如果您省略 eNewValue,并且该属性存在,X# 将保持该属性的值不变。
如果您省略 eNewValue,并且该属性是新增的,X# 将该新属性的值设置为 False (.F.)。

返回值

类型:Boolean
逻辑型。下表描述了 AddProperty( ) 的返回值,以及尝试为对象添加已存在的属性时的行为。
返回值描述
True (.T.)AddProperty( )成功添加属性时:
当新属性是一个数组属性,并且数组已经存在时, AddProperty() 会根据 cPropertyName 指定的维度重新定义数组。 如果您指定了 eNewValue 的值,所有数组元素将被设置为该值。 如果您省略了 eNewValue,所有数组元素将被设置为 False (.F.)。

如果新属性不是数组属性,但现有的属性是一个数组属性。该属性将保持为数组属性,维度相同。 如果您指定了 eNewValue 的值,所有数组元素将被设置为该值。 如果您省略 eNewValue,所有数组元素将被设置为 False(.F.)。

如果新属性不是数组属性,并且现有的属性也不是数组属性或不是只读的 X# 本地(native)属性。 如果您指定了 eNewValue 的值,现有的属性将被设置为该值。 如果您省略 eNewValue,现有的属性值将保持不变。

如果指定的属性已经是对象的成员,但被标记为 HiddenProtected。 X# 将生成错误,"没有找到指定的属性名(错误1734 译者注:VFP 的错误编号)", 并且该属性的值不会被设置为传递给 AddProperty( ) 的值。
False (.F.) AddProperty( ) 未能成功添加属性时。
如果该属性是一个数组属性,并且现有的属性不是数组属性。现有的属性将保持不变。
备注
您可以使用 AddProperty( ) 为对象创建数组属性。这样做时,如果提供了 eNewValue,每个元素在数组中都将被初始化为 eNewValue 的值。 否则,每个属性在数组中的值将被设置为 False (.F.)。有关为对象创建数组属性的更多信息,请参阅示例部分。

X# 将新属性作为 Public 属性添加。您不能指定该属性为 ProtectedHidden
如果现有的属性是只读的 X# 本地(native)属性,例如 BaseClass 属性,X# 将生成错误,"没有找到指定的属性名(错误1734)"。
如果属性名称无效,例如,属性名称包含空格或其他非法字符,X# 将生成错误,"不正确的属性名(错误1470)"。

对于从本地 X# 类派生的对象实例,AddProperty( ) 将尊重内置 AddProperty 方法的可见性设置。
如果 AddProperty 方法被标记为 HiddenProtectedADDPROPERTY( ) 不会创建新属性,并返回 False (.F.)。
如果 AddProperty 方法被标记为 Public(默认),则ADDPROPERTY( ) 将创建属性,并返回 True (.T.)。
这保护了原始类设计。
备注 备注:
这不适用于使用 X# OLEPUBLIC 类创建的 COM 对象。
AddProperty( ) 不适用于 For EACH 命令的对象引用。然而,您可以使用 AddProperty 方法代替。 示例1
下面的示例向使用 SCATTER 命令创建的对象添加新属性。
X#
1Use customers
2SCATTER NAME oCust
3ADDPROPERTY(oCust,"MyProperty")

示例2
下面的示例为对象 oMyForm 创建属性数组,并显示其内容:1 和 "Two"。
X#
1oMyForm = CreateObject('Form')
2ADDPROPERTY(oMyForm, 'MyArray(2)', 1)
3oMyForm.MyArray(2) = "Two"
4Clear
5? oMyForm.MyArray(1)
6? oMyForm.MyArray(2)
参见