17370845950

VFP表单返回对像、数组、值,这个细节要注意,防止崩溃
平常我们开发系统,像选择客户档案,产品档案时要返回值,此时有些要返回单个值或返回一行值,还有返回多行值该怎么做?

我们会选择模式表单进行返回值操作,为了保证表单的临时表是独立环境,各个表单的数据不会影响,我们选择私有工作期。

在unload方法实际返回数据给上层程序

代码语言:javascript代码运行次数:0运行复制
If Thisform.Tag ="1"    Return KCBMZD.KCBMZD_BMBHElse    Return .null.Endif

调用模式表单获取表单的返回值

代码语言:javascript代码运行次数:0运行复制
Do Form 模式表单 TO uReturn* 处理uReturn,下面的业务流程

uReturn 为返回值上面我是设置返回.null.,像返回.F. 或空串表示没有返回值,或者产生了错误。

但有以下原因的时候,返回值并非为意想中的值.1当模式表单在LOAD,INIT事件加载出错2 在init事件中 return 0此时表单不会调用Unload方法返回值,而且没有返回值。也就是uReturn将出现未定义的错误

为避免这种情况,我们要先定义一下uReturn ,这样就不会出错了。

代码语言:javascript代码运行次数:0运行复制
local uReturn uReturn=.null.Do Form 模式表单 TO uReturnif !isnull(uReturn)  *--执行工作代码endif 
从表单返回数组

在一个表单(例:frmTest)中新建一个表单属性 oCustom在表单的 Init 事件中

代码语言:javascript代码运行次数:0运行复制
This.oCustom = CreateObject("Custom")This.oCustom.AddProperty("aValue[1]","")

在表单的 Unload 事件中

代码语言:javascript代码运行次数:0运行复制
Return This.oCustom

调用表单

代码语言:javascript代码运行次数:0运行复制
local oCustomdo form frmTest to oCustom? alen(oCustom.aValue) 
从表单返回对象

在表单的 Unload 事件中

代码语言:javascript代码运行次数:0运行复制
oFly=Createobject("Empty")AddProperty(oFly,"aValue[1]")Return oFly

如果从表单中的一个表中返回数组

代码语言:javascript代码运行次数:0运行复制
oFly=Createobject("Empty")select * from 表名 into array xxylarow=ALEN(xxy,1)lacol=ALEN(xxy,2)AddProperty(oFly,"aValue[(larow),(lacol)]")ACOPY(xxy,oFly.aValue)Return oFly