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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VFP问题 用户可以给表单添加自定义属性和方法程序???相关的知识,希望对你有一定的参考价值。

在运行时刻向一个对象添加一个新属性。

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)
参考技术A
打开表单,选择菜单“表单”-->"编辑属性/方法",新建属性“D"本回答被提问者采纳
参考技术B 可以!

具有自定义属性表单的 ASP.NET 组件

【中文标题】具有自定义属性表单的 ASP.NET 组件【英文标题】:ASP.NET Component with custom property form 【发布时间】:2011-06-29 16:10:33 【问题描述】:

我正在开发一个供内部使用的自定义 DataGridView 控件,并且我想添加一个自定义属性选项,它会在其中启动一个 WinForm 以添加自定义属性。想想 DataGridView 的 Columns 属性设计器,您在其中单击带有文本“...”的按钮,它会打开一个 WinForm,您可以在其中添加不同的 BoundColumns。这正是我喜欢做的事情,但我不知道如何开始,甚至不知道从哪里开始。如何做到这一点?

【问题讨论】:

【参考方案1】:

这是你需要知道的(基础):http://msdn.microsoft.com/en-us/library/zt27tfhy.aspx

这是一个有用的例子(在第一个链接中):http://msdn.microsoft.com/en-us/library/az5kdaz0.aspx

如果你想构建一个自定义的DataGrid,你需要构建一个从DataGrid控件继承的控件,在读取顶部的链接文档后,你可以添加具有所需属性的属性,以便在Control中使用它。

(抱歉英语不好,我是意大利人!)。

【讨论】:

以上是关于VFP问题 用户可以给表单添加自定义属性和方法程序???的主要内容,如果未能解决你的问题,请参考以下文章

我设计的VFP进销存系统,在用户登录后登录界面还在,不能自动关闭,另外设计的菜单显示不出,还是系统的

方法重载和多态

ASP如何获取当前表单的值 并输出

向 Django 应用程序添加一个自定义的面向用户的表单(使用 selectize 和 taggit)

Vuejs如何给元素添加自定义属性

使用注册表单添加到自定义用户字段(django)