VFP问题 用户可以给表单添加自定义属性和方法程序???

 我来答
habcb
2011-05-30 · TA获得超过268个赞
知道小有建树答主
回答量:627
采纳率:0%
帮助的人:238万
展开全部
在运行时刻向一个对象添加一个新属性。

ADDPROPERTY( ) 用于向有效的 Visual FoxPro 对象添加新属性和值,对象包括由 Visual FoxPro 类生成的类,COM 类,以及 SCATTER...NAME 命令生成的类。

ADDPROPERTY(oObjectName, cPropertyName, [, eNewValue ])

参数
oObjectName
指定要加属性的对象的名称。如果 oObjectName 不是一个有效的对象,Visual FoxPro 将产生适当的提示信息。
cPropertyName
指定要添加到对象中的新属性的名称。如果指定的属性名不存,该属性将被创建并添加。
eNewValue
指定新属性的设置值。当省略 eNewValue时,如果该属性已经存在,Visual FoxPro保持该属性值不变;如果该属性是新添加的,Visual FoxPro 将该属性值设为“假”(.F.)。
返回值
逻辑型数据类型。下表中列出了ADDPROPERTY( )的返回值,及添加一个已经存在的属性到对象时的表现。

返回值 说明
真 (.T.)
当 ADDPROPERTY( ) 成功添加属性时。

当新属性是一个数组属性,并且该数组已经存在,ADDPROPERTY( ) 根据cPropertyName中指定的情况重新调整数组的大小。如果用eNewValue指定了属性值,数组中所有元素都将设为该值。如果省略 eNewValue,所有的数组元素都将被设为假(.F.)。

如果新属性不是一个数组属性,但已经存在的属性是一个数组属性,该属性将保持同样大小的数组属性。如果用 eNewValue指定了新值,数组中全部元素将被设为该值。如果省略eNewValue,所有数组元素将被设为假(.F.)。

如果新属性不是一个数组属性,并且已存在的属性是不是数组属性或者不是一个只读的 Visual FoxPro 自带属性,如果eNewValue中指定了新值,已存在的属性将被设为该值。如果省略eNewValue,已存在的属性值将保持不变。

如果指定的属性是一个已经存在,被标为Hidden (隐藏)或 Protected(受保护)的对象成员, Visual FoxPro 产生一个错误,"name 属性没有找到(Error 1734)"并且该属性不能被 ADDPROPERTY( )设置。

假 (.F.)
当 ADDPROPERTY( ) 未能成功添加属性时。

当新属性是数组属性,已存在的属性不是数组属性,已存在的属性将保持不变。

说明
用 ADDPROPERTY( ) 可以为对象创建属性数组。如果提供了eNewValue,每个数组元素初始化为该值。否则,数组中每个属性的值都被设为假(.F.)。更多的关于为对象创建属性数组的信息,请参见示例。

Visual FoxPro新添加的属性将做为Public(公共)属性。该属性可以被指定为 Protected 或 Hidden。

如果已存在的属性是只读的 Visual FoxPro 自带属性,比如BaseClass 属性,Visual FoxPro 将产生一个错误,"属性名是只读的(Error 1743)"。

如果属性名不是效的,例如,属性名中包含空格或其它非法字符,Visual FoxPro 将产生一个错误,"不正确的属性名(Error 1470)"。

对于由Visual FoxProFor类继承而来的对象的实例,ADDPROPERTY( ) 将保持AddProperty方法中的可视化设置。如果AddProperty 被标为 Hidden 或 Protected, ADDPROPERTY( ) 不创建新属性并返回假(.F.)。如果 AddProperty 方法被标为Public (默认),ADDPROPERTY( ) 创建数组并返回真(.T.)。这保护了原始的类设计。

注意:
这个不能应用到由 Visual FoxPro OLEPUBLIC 类创建的 COM 对象。
 

对于FOR EACH命令中的对象引用,不能使用ADDPROPERTY( )函数,但可以用AddProperty 方法程序来实现该功能。

示例
示例 1

下面的示例向SCATTER命令创建的对象添加一个新的属性。

USE customers
SCATTER NAME oCust
ADDPROPERTY(oCust,"MyProperty")

示例 2

下面的示例向 oMyForm 对象添加了一个属性数组,并且显示它的内容,1 和 "Two"。

oMyForm = CREATEOBJECT('Form')
ADDPROPERTY(oMyForm, 'MyArray(2)', 1)
oMyForm.MyArray(2) = "Two"
CLEAR
? oMyForm.MyArray(1)
? oMyForm.MyArray(2)
uvos341
2011-05-25 · TA获得超过1858个赞
知道小有建树答主
回答量:919
采纳率:0%
帮助的人:0
展开全部

打开表单,选择菜单“表单”-->"编辑属性/方法",新建属性“D"
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tangzuojun8848
2011-05-25
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
可以!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式