| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3177 人关注过本帖
标题:编译成EXE文件后,退出不彻底的问题如何解决?
只看楼主 加入收藏
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1089
专家分:2682
注 册:2015-12-30
收藏
得分:0 
主程序main.prg,DO 登录表单  后 要加read events,这个没错
你登录表单执行后,如果登录成功是不是还要调主表单?如果是这样的话,在登录表单中clear events就不行了,clear events应该放在主表单的destroy中
2021-11-08 10:53
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1089
专家分:2682
注 册:2015-12-30
收藏
得分:0 
介绍一下我的做法
main.prg 直接调用主表单,在主表单中先调用登录表单,根据登录表单的返回值判断登录是否正常,如果不正常就退出了,正常就继续
clear events  在主表单的destroy里
2021-11-08 10:55
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:789
专家分:1165
注 册:2021-10-13
收藏
得分:0 
read event 要放在用户操作之前,其它该加载的都加载好。最好放在主表单的activate事件里,你试试将read events 放在activate里试试。
clear events 要放在结束鼠标,键盘操作之后,卸载资源之前,这是FoxPro最令人头疼的2句命令,不然就是不能退出foxpro。。。

另外,你是用系统的界面当主界面的吧?那就要屏蔽掉系统关闭按钮(_screen.closable=.f.)。设置主表单的退出按钮为唯一退出,其它地方不允许用户退出。。。

这样应该可以解决你的问题。
2021-11-09 07:51
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
回复 楼主 chansnsn
你是次次都不能完全退出吗
2021-11-09 08:30
cjc1010
Rank: 3Rank: 3
等 级:论坛游侠
威 望:4
帖 子:65
专家分:195
注 册:2006-4-16
收藏
得分:0 
能否看一下主程序?
2021-11-09 09:52
chansnsn
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2013-6-27
收藏
得分:0 
回复 15楼 cjc1010
*****主程序MAIN.PRG****************
 CLEAR ALL
 SET EXACT ON
 SET SAFETY OFF
 SET DELETED On
 _screen.Visible =.f.
 
 SET EXCLUSIVE ON
 SET TALK OFF
 SET DATE TO ansi
 SET CENTURY ON    &&日期年份显示为4位数
 SET MULTILOCKS ON
 CLOSE ALL

DO FORM psd     &&运行登录程序
READ EVENTS
  
*********登录程序代码 “确定”按钮代码*************   
   SELECT czy   &&账户信息表
   GO TOP
   LOCATE FOR ALLTRIM(CZID)=ALLTRIM(THISFORM.TEXT1.Value) OR ALLTRIM(nam)=ALLTRIM(thisform.text1.Value)
   IF !FOUND()
      =MESSAGEBOX('无此用户信息!',0+48,'提示')
      THISFORM.TEXt1.SETFOCUS
      RETURN
   ELSE
      IF ALLTRIM(PSD)<>ALLTRIM(THISFORM.TEXT2.Value)
         =MESSAGEBOX('口令错误!',0+48,'提示')
         THISFORM.TEXT2.SetFocus
         RETURN
       ENDIF   
   ENDIF      

DO FORM main           &&运行主表单
RELEASE thisform
READ EVENTS


**********主表单的 QUERYUNLOAD()代码*********************
  CLOSE ALL
  CLEAR WINDOW      
  CLEAR EVENTS            
  RELEASE thisform      
  QUIT
2021-11-10 14:03
chansnsn
Rank: 2
等 级:论坛游民
帖 子:16
专家分:15
注 册:2013-6-27
收藏
得分:0 
问题解决了。在主程序main.PGR的READ EVERNS后面加了quit语句
*****主程序MAIN.PRG****************
 CLEAR ALL
 SET EXACT ON
 SET SAFETY OFF
 SET DELETED On
 _screen.Visible =.f.
 
 SET EXCLUSIVE ON
 SET TALK OFF
 SET DATE TO ansi
 SET CENTURY ON    &&日期年份显示为4位数
 SET MULTILOCKS ON
 CLOSE ALL

DO FORM psd     &&运行登录程序
READ EVENTS
QUTI
2021-11-10 17:09
sam_jiang
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:789
专家分:1165
注 册:2021-10-13
收藏
得分:0 
回复 17楼 chansnsn
你的程序逻辑有点问题,read events 按理只需一次便可以了,你这用了2次。

楼上有个兄弟提到的对,你应该调用主表单,然后再调用权限表单比较好吧?read events 是等待处理用户的键盘、鼠标事件,只有在发出clear events 结束键盘、鼠标事件后才返回程序,不然就一直在那里等待,也就是无法退出。建议把read events 语句放在主表单的activate 事件里,然后在unload事件里clear events,这样就不会再出现这种不能退出的情况了。
2021-11-10 17:56
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
两个表单的 Destroy 事件执行一句 CLEAR EVENTS 就可以
2021-11-10 19:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
**********主表单的 QUERYUNLOAD()代码*********************
  CLOSE ALL
  CLEAR WINDOW      
  CLEAR EVENTS            
  RELEASE thisform      
  QUIT
这组代码不要

DO FORM main      
**RELEASE thisform   && 这句不要
READ EVENTS
......在这做关闭main表单后的处理

[此贴子已经被作者于2021-11-10 19:35编辑过]

2021-11-10 19:33
快速回复:编译成EXE文件后,退出不彻底的问题如何解决?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.068683 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved