1

我的 FoxPro 程序在右上角有一个退出按钮和通常的最小/最大/X 按钮,当使用任何一个程序时,它们都会消失并且似乎已正确关闭。但是,当我检查我的任务管理器时,我发现它仍在运行。

这是我的 main.prg 文件:

ON SHUTDOWN CLEAR EVENTS
with _screen
.visible = .f.
endwith

DO FORM locations\form1
READ EVENTS
ON SHUTDOWN 

这是我的退出按钮“点击”事件的代码:

unlock all
close database all
clear events
RELEASE ALL
quit

我的程序只有一个表单,它被设置为顶级......关于如何解决这个问题的任何建议?

感谢您的时间和帮助:)

4

2 回答 2

2

如果您正在运行源自 IDE(开发环境)的 VFP,并且执行了 _Screen.Visible = .F.,则您正在隐藏 VFP 主屏幕,系统可能会直接返回该屏幕,因为您看不到它,你不能正式退出。

在您的 MAIN.PRG 中,将以下内容放在底部作为单独的“函数”,该函数将在调用堆栈中可见。

function CloseMyApp
   */ For now, just to "ignore" any errors of any dangling objects trying to get released
   */ and otherwise might be HIDING an error upon shutdown.
   on error *

   */ NOW, clear the event handler and close everything else down
   clear events
   close database all
   close tables
   on shutdown 

   quit
endfunc 

然后,在您开始时,将您的 ON SHUTDOWN 更改为调用此“函数”......现在,您只发出一个清除事件的命令。这样,您可以在关闭之前包装一堆“清理”操作,而不仅仅是清除读取事件。

ON SHUTDOWN Do CloseMyApp in Main.PRG
于 2011-06-28T17:56:29.920 回答
0

如果您单击表单上的 EXIT 按钮(您的按钮),表单是否会关闭并且应用程序是否正确关闭?

如果是这样,假设该按钮名为“cmdExit”,然后将此行添加到表单的“UNLOAD”事件中

THISFORM.cmdExit.click()

于 2011-08-11T14:20:01.217 回答