You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FoxPro中如何等待其他表单关闭后再继续执行代码?

解决Visual FoxPro中等待表单关闭后再执行后续代码的问题

你遇到的问题是Visual FoxPro默认打开表单后会立即继续执行后续代码,而不会等待表单关闭。这里有两种常用的方法可以实现“等待表单关闭再继续”的逻辑:

方法1:循环等待表单可见状态(无需修改目标表单)

这种方式不需要改动frmcaapproval的内部代码,直接在调用处添加等待逻辑即可:

USE data\tblcashadvanceexemption ALIAS CA
* 提示用户查看豁免信息并验证数据
IF RECcount()>0
    thisform.Hide()
    * 打开表单并关联到对象变量,LINKED确保对象在当前作用域有效
    DO FORM frmcaapproval NAME oCAForm LINKED
    * 循环等待表单关闭(Visible属性变为.F.)
    DO WHILE oCAForm.Visible
        INKEY(0.1) && 每隔0.1秒检查一次,避免占用过多CPU资源
    ENDDO
    * --- 这里写表单关闭后需要执行的后续逻辑 ---
ENDIF

方法2:使用READ EVENTS(需要修改目标表单)

这种方式适合更复杂的界面流程,通过事件循环暂停代码执行,直到表单关闭时触发CLEAR EVENTS恢复执行:

第一步:修改调用代码

USE data\tblcashadvanceexemption ALIAS CA
* 提示用户查看豁免信息并验证数据
IF RECcount()>0
    thisform.Hide()
    DO FORM frmcaapproval
    READ EVENTS && 暂停代码执行,直到CLEAR EVENTS被调用
    * --- 表单关闭后,这里的代码会继续执行 ---
ENDIF

第二步:修改frmcaapproval表单的Unload事件

打开frmcaapproval表单的设计器,找到Unload事件,添加以下代码:

CLEAR EVENTS

两种方法的选择建议:

  • 如果只是临时处理单个表单的等待需求,方法1更快捷,不需要改动表单内部;
  • 如果你的程序有多个表单交互的复杂流程,方法2的事件循环方式更规范,能更好地管理界面状态。

内容的提问来源于stack exchange,提问作者Vic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:55:14