前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >退出程序代码就该这么写,只看这篇就会了。

退出程序代码就该这么写,只看这篇就会了。

作者头像
加菲猫的VFP
发布2021-08-16 15:00:47
8390
发布2021-08-16 15:00:47
举报
文章被收录于专栏:加菲猫的VFP

退出程序谁不会写了,就是各种关关关,一般人写退出程序大致如下:

代码语言:javascript
复制
Clear Events
Set Library To
=SQLDisconnect(ConnHandle)
Clear Dlls
Close All
Quit

其实嘛,一般情况下这样没有问题,但用在管理系统就不好了。

这是一个业务表单场景,一张采购单,用户正在编辑,此时我们点击表单的右上角的X,此时应该提示用户此表单还没有保存(在祺佑三层开发框架中用了DAL类这个是自动触发的)。

那我们在QueryUnload中这样写 

代码语言:javascript
复制
If Inlist(Thisform.OPCODE,1,2)
         yn=Messagebox("数据还未保存,确认放弃吗",4+32+256,"提示")
 If yn =6
 Else
                   Nodefault
         Endif
Endif

(OPCODE=1,2为新增和修改模式,三层开发的框架的代码会更合理,我再来吹个牛,用框架就是一种爽的体验。)

一切都工作得好好的,但是用户点了整个主界面表单(这里是用顶层表单做主界面)的退出,结束各家表单纷纷退出了,压根没有触发提示保存,也就是没有触发QueryUnload。

于是,我们想办法触发QueryUnload方法就好了,在清理代码前加入如下代码就好

代码语言:javascript
复制
If _Screen.FormCount>0
 Dimension TMPFORM[_SCREEN.FORMCOUNT]
 For I=1 To _Screen.FormCount
 TMPFORM[I]=_Screen.Forms(I)
 Endfor
    For I=1 To _Screen.FormCount
       If Inlist(TMPFORM[I].Caption,"祺佑业务系统","Toolbar1","维护精灵")
 Else
           Release Windows (TMPFORM[I].Name)
 *      TMPFORM[I].RELEASE
 If  Vartype(TMPFORM[I])='O'
 Exit
           Endif
       Endif
    Endfor
Endif

此时点击主界面的叉,各种未保存的表单纷纷提示,我没有保存,是否继续。

你学会了吗?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档