Functions.AddProperty 方法 | |
在运行时向对象添加新属性。
您可以使用 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
public static bool AddProperty(
Object oObjectName,
string cPropertyName,
[DefaultParameterValueAttribute(0, 1)] __Usual eNewValue
)
查看代码参数
- 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,现有的属性值将保持不变。
如果指定的属性已经是对象的成员,但被标记为 Hidden 或 Protected。
X# 将生成错误,"没有找到指定的属性名(错误1734 译者注:VFP 的错误编号)",
并且该属性的值不会被设置为传递给 AddProperty( ) 的值。
|
False (.F.)
|
当 AddProperty( ) 未能成功添加属性时。
如果该属性是一个数组属性,并且现有的属性不是数组属性。现有的属性将保持不变。
|
备注
您可以使用
AddProperty( ) 为对象创建数组属性。这样做时,如果提供了 eNewValue,每个元素在数组中都将被初始化为 eNewValue 的值。
否则,每个属性在数组中的值将被设置为 False (.F.)。有关为对象创建数组属性的更多信息,请参阅示例部分。
X# 将新属性作为
Public 属性添加。您不能指定该属性为
Protected 或
Hidden。
如果现有的属性是只读的 X# 本地(native)属性,例如
BaseClass 属性,X# 将生成错误,"没有找到指定的属性名(错误1734)"。
如果属性名称无效,例如,属性名称包含空格或其他非法字符,X# 将生成错误,"不正确的属性名(错误1470)"。
对于从本地 X# 类派生的对象实例,
AddProperty( ) 将尊重内置
AddProperty 方法的可见性设置。
如果
AddProperty 方法被标记为
Hidden 或
Protected,
ADDPROPERTY( ) 不会创建新属性,并返回 False (.F.)。
如果
AddProperty 方法被标记为
Public(默认),则
ADDPROPERTY( ) 将创建属性,并返回 True (.T.)。
这保护了原始类设计。
备注: |
---|
这不适用于使用 X# OLEPUBLIC 类创建的 COM 对象。 |
AddProperty( ) 不适用于
For EACH 命令的对象引用。然而,您可以使用
AddProperty 方法代替。
示例1
下面的示例向使用
SCATTER 命令创建的对象添加新属性。
1Use customers
2SCATTER NAME oCust
3ADDPROPERTY(oCust,"MyProperty")
示例2
下面的示例为对象 oMyForm 创建属性数组,并显示其内容:1 和 "Two"。
1oMyForm = CreateObject('Form')
2ADDPROPERTY(oMyForm, 'MyArray(2)', 1)
3oMyForm.MyArray(2) = "Two"
4Clear
5? oMyForm.MyArray(1)
6? oMyForm.MyArray(2)
参见