退出程序谁不会写了,就是各种关关关,一般人写退出程序大致如下:
代码语言: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
此时点击主界面的叉,各种未保存的表单纷纷提示,我没有保存,是否继续。
你学会了吗?