在程序中自动关闭表单 在编制一个应用系统,我们往往会要考虑某些表单的生存时间,某些表单必须在执行某些操作后自动关闭。如我们执行备份程序时,如果采用备份数据库的方法时,因某些表单的数据环境中有打开的表,备份将失败;或者我们采用工具条时,用户在工具条上左点右击,突然出现提示数据表冲突等等。怎么办?能否做到提示用户已打开的窗口和将要打开的窗口有冲突,然后根据用户的选择不作处理或自动关闭不需要的表单?以下是我编制的一个自定义函数,可以实现上述要求。 * 程序说明:关闭不需要的表单 * * 程序用途:根据传来的参数关闭不需要的表单 * * 使用说明:Gbbd("表单标题1|表单标题2|...|",提示信息) * * 表单标题为保留的表单标题,用'|"分隔 * Function Gbbd Para cBlbd,cTsxx */将分隔表单标题还原 cBlbd=Alltrim(cBlbd) If Right(cBlbd,1)<>'|' cBlbd=cBlbd-'|' Endif nZfcd=Len(cBlbd) For i=1 To nZfcd If At('|',cBlbd,i)=0 Exit Endif Endfor nBlbds=i-1 If nBlbds=1 Dime cBdbt(1) cBdbt(1)=Chrtran(cBlbd,'|','') Else Dime cBdbt(nBlBds) For i=1 To nBlbds If i=1 cBdbt(1)=Left(cBlbd,At('|',cBlbd)-1) Else cBdbt(i)=Substr(cBlbd,At('|',cBlbd,i-1)+1,At('|',cBlbd,i)-At('|',cBlbd,i-1)-1) Endif Endfor Endif nBds=_screen.FormCount For i=1 to nblbds cBdbt(i)=Chrtran(cBdbt(i),"|","") Endfor */如果发现系统的表单数大于需保留的表单数,即有表单要关闭,发出提示信息,询问是否自动关闭 If nBds>nBlbds If MessageBox(cTsxx,4+32+256,"提示信息")=7 &&此处 Retu 0 Endif Endif i=nBds nBdgb=.t. Do While nBds>nblbds If i=0 Exit Endif For j=1 To nBlbds If Alltrim(_screen.Forms(1).Caption)=cBdbt(J) nBdgb=.f. exit Else nBdgb=.t. Endif Endfor If nBdgb=.t. _screen.Forms(1).Release nBds=_screen.FormCount i=nBds Loop Endif If i>_screen.FormCount i=_screen.FormCount Endif For j=1 To nBlbds If Alltrim(_screen.Forms(i).Caption)=cBdbt(J) nBdGb=.f. exit Else nBdgb=.t. Endif Endfor If nBdgb=.f. i=i-1 Loop Else _screen.Forms(i).Release Endif nBds=_screen.FormCount i=nBds Enddo Retu 1 程序示例: 假如当前打开的表单名有main,toolbar1,sjlr。用户此时点击工具条上的sjbf按钮,而sjbf的打开与sjlr冲突,我们可以在sjbf的load中加入代码: If Gbbd("toolbar1|main|",'运行sjbf必须关必其他窗口!'+chr(13)+'选择 是 自动关闭,选择 否 不做处理')=0 Retu 0 Endif |
|