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

2021-08-16 15:00:47 浏览数 (1)

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

代码语言: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

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

你学会了吗?

0 人点赞