| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5641 人关注过本帖
标题:一个表单上退出按钮的问题
只看楼主 加入收藏
longhair
Rank: 2
等 级:论坛游民
威 望:1
帖 子:8
专家分:11
注 册:2015-12-1
收藏
得分:0 
实现“点按钮正常退出,而点击红叉无效”
我一般直接设置关闭按钮无效就能实现了。
2016-03-29 20:50
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
收藏
得分:0 
以下是引用longhair在2016-3-29 20:50:39的发言:

实现“点按钮正常退出,而点击红叉无效”
我一般直接设置关闭按钮无效就能实现了。



那个。。。请问如何“设置关闭按钮无效”?我觉得我用QeuryUnload 是不是不对?
2016-03-29 20:55
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
收藏
得分:0 
以下是引用longhair在2016-3-29 20:42:21的发言:

为了能正常退出,第二个read events必须有地方用clear event清除掉,要不就直接注释掉那两行。


我将主程序改为(把第二个Read Events、RETURN都注释掉):

DO form 主表单.scx

Read Events &&开始事件处理:使启动封面停下来
_Screen.Show &&显示VFP主窗口
**Read Events &&开始事件处理
**RETURN

clea all
close all data

Quit

但是第一个压缩包的程序,还是一点红叉,退出后,后台还是出现VFP6进程。。。。。
2016-03-29 21:04
longhair
Rank: 2
等 级:论坛游民
威 望:1
帖 子:8
专家分:11
注 册:2015-12-1
收藏
得分:0 
回复 12楼 vfpp314
现在在外面,我记得是把主表单的属性closabled设置为.f.就可以了。
2016-03-29 21:09
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
收藏
得分:0 
回复 14楼 longhair
谢谢,我刚才试了一下,好像

主表单 的 QueryUnload  里面把这两个都写上,可以解决红叉退出后,后台还有进程的问题。。。
NODEFAULT


问题是解决了,结贴,但是总感觉还是不太懂 QueryUnload 到底是怎么个意思。

目前我主观理解就是 NODEFAULT 使得红叉无效,然后又自动去执行 按钮2的退出。。。。

但是vfp为啥要设计成这样呢?想不太明白。。。。非要对小红叉这样人工处理一下才保险,否则的话后台总有vfp6的进程,对初学者来说真是费解啊。。。。

[此贴子已经被作者于2016-3-29 21:19编辑过]

2016-03-29 21:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:0 
用RELEASE命令或Release方法卸载表单是不会触发QueryUnload事件。
可以这样看看:
** QueryUnload事件代码:
sMsg = ICASE(this.ReleaseType == 1, "关闭窗口",;
             this.ReleaseType == 2, "退出VFP", "释放资源")
IF MESSAGEBOX(sMsg, 1+32+256, "提示") != 1
    NODEFAULT
ENDIF

2016-03-30 07:44
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
试试直接写在unload事件中。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2016-03-30 07:53
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
楼主的代码问题不少,看来很多问题并没有搞清楚。小结如下:

1. 对于主表单为模式表单来说(WindowType=1),根本用不到 Read Events语句,只有非模式表单才需要 Read Events
2. 顶层表单(ShowWindow=2)会忽略表单的 WindowType 设置,也就是说:顶层表单都是非模式的。
3. 主程序中为什么要加两个 Read Events?第二个 Read Events 应该删去
4. QueryUnload 只有在单击表单右上角的“关闭”按钮才会发生,而执行代码 THISFORM.Release 或 Release THISFORM 不会发生QueryUnload
5. 若想在关闭窗口时统一执行特定的操作,有多种方法。
   可以在表单上新建一个退出按钮,并禁用表单的关闭按钮(form.Closable=.f.)。
   还可以不禁用关闭按钮,而在form.QueryUnload事件中输入:
   Nodefault
   THIS.cmdExit.Click
   还可以将退出时要统一执行的代码放在 Form.Destroy事件中。不管是 THISFORM.Release 还是单击窗口的关闭按钮,最后都会调用 Form.Destroy

[此贴子已经被作者于2016-3-30 08:47编辑过]


泉城飞狐
2016-03-30 08:45
vfpp314
Rank: 1
等 级:新手上路
帖 子:46
专家分:5
注 册:2016-3-18
收藏
得分:0 
以下是引用liuxingang28在2016-3-30 08:45:33的发言:

楼主的代码问题不少,看来很多问题并没有搞清楚。小结如下:

1. 对于主表单为模式表单来说(WindowType=1),根本用不到 Read Events语句,只有非模式表单才需要 Read Events
2. 顶层表单(ShowWindow=2)会忽略表单的 WindowType 设置,也就是说:顶层表单都是非模式的。
3. 主程序中为什么要加两个 Read Events?第二个 Read Events 应该删去
4. QueryUnload 只有在单击表单右上角的“关闭”按钮才会发生,而执行代码 THISFORM.Release 或 Release THISFORM 不会发生QueryUnload
5. 若想在关闭窗口时统一执行特定的操作,有多种方法。
   可以在表单上新建一个退出按钮,并禁用表单的关闭按钮(form.Closable=.f.)。
   还可以不禁用关闭按钮,而在form.QueryUnload事件中输入:
   Nodefault
   THIS.cmdExit.Click
   还可以将退出时要统一执行的代码放在 Form.Destroy事件中。不管是 THISFORM.Release 还是单击窗口的关闭按钮,最后都会调用 Form.Destroy



谢谢,解答太全面了。只是对 模式表单WindowType 这块始终不太明白
2016-03-30 17:27
快速回复:一个表单上退出按钮的问题
数据加载中...
 
   



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

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