如何让VFP的表单返回值
编号:QA001279
建立日期: 1999年7月2日 最后修改日期:1999年7月2日
所属类别:
佚名:
vfp中让FORM返回值的办法是在UNLOAD事件中使用RETURN可是UNLOAD事件是在本表单所有的对象都已RELEASE之后才发生的,表单中所有的改变都已不存在,还能返回什么参数!!那么我想要一个表单返回用户的一些选择,难道只能使用全局变量?
回答:
摘自《远程续缘》第12期(http://jfzcc.yeah.net)
Vfp的表单可以有返回值,但须符合以下条件:
1. 该表单的窗体类型必须是模式窗体;
2. 调用该表单的命令为:Dp Form formName [WITH参数列表] TO VarName
. 其中formName是被调用表单的名称(若表单有参数应正确指定实参),VarName 就是用来接收表单返回值的变量名。如果该变量原先没有定义, 则会被自动创建。
3. 被调用表单必须在unload 方法的代码中使用返回语句 return 表达式
. 并且应保证该语句一定能够被执行到,以便将表达式的值送入指定的变量中。
.return 命令后的表达式可以是任意类型的合法表达式, 如果省略了return 语句后的表达式,则表单将返回值逻辑值.T.。
例:
--------------------------------------------------------------
hfz=` `
do form test to hfz &&调用test表单,返回值在变量hfz中
--------------------------------------------------------------
在test表单unload 的方法中添加代码:
retu `这是返回值` &&也可是变量
如果你想返回test表单中某一控件的值, 由于表单的unload 事件发生在destroy 事件之后,而此时在此表单上 的其他控件都已经释放,无法返回控件在释放前的值,这就是wshy在“VFP让我生气!!”中所说的:“ UNLOAD
事件是在本表单所有的对象都已RELEASE之后才发生的表单中所有的改变都已不存在,还能返回什么参数!!”。
因此要返回控件的值,只能引用表单的属性,而不能引用这些控件的任何属性值,如command1.caption 等。
解决的办法是在表单中添加一公共属性,如Ggsx,这样在需返回某一控键的值时,先将需要返回的值送入表单的
公共属性Ggsx中, 这样调用程序才能够获得表单中控件的返回值。
例:
在command1.click中写上 thisform.Ggsx = this.caption
在表单的UNLOAD事件中写 retu this.Ggsx 这样就把command1的caption值返回给了调用程序。
此问题由远程续缘回答。
| |
|
|
| |
|
|