热情软件屋

 

如何让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值返回给了调用程序。

此问题由远程续缘回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio