当前位置: 代码迷 >> PB >> 帮忙瞧段代码,实现关闭所有窗口的功能
  详细解决方案

帮忙瞧段代码,实现关闭所有窗口的功能

热度:26   发布时间:2016-04-29 07:51:55.0
帮忙看段代码,实现关闭所有窗口的功能。
window w 
w=w_main.getfirstsheet() 
do while isvalid(w)
if w.tag='背景' then
w=w_main.getnextsheet(w) 
else
close(w)
w=w_main.getfirstsheet() 
end if
loop


此段代码想要实现关闭所有窗口,可是运行后没有反应。
还有,我看不懂这段代码的意思,希望高手解释一下。谢谢。
------解决方案--------------------
你关闭的窗口应该是mdi子窗口才可以,就是说用opensheet打开的窗口
------解决方案--------------------
window w  
w=w_main.getfirstsheet()  //获取第一个或者是最早打开的子窗口
do while isvalid(w)       //如果子窗口有效就开始循环
  if w.tag='背景' then     //如果子窗口是用作显示背景就找下一个
     w=w_main.getnextsheet(w)  
  else
     close(w)             //如果子窗口是不是用作用作显示背景就关闭 
     w=w_main.getfirstsheet()  //重新找第一个或者是最早打开的子窗口
  end if
loop

上面的语句只会关闭所有的tag<>'背景' 的子窗口。不会关闭主窗口

------解决方案--------------------
程序本身没语法错误,你要关闭所有窗口,直接关闭父窗口就可以了。如果上面的代码你是在父窗口里写的,就直接写上close(this)就可以了
------解决方案--------------------
引用:
我是关闭除主窗口之外的所有窗口。主窗口的tag为背景。


这个和主窗口及后来打开的窗口的类型有关系。
如果是达到重新打开软件的效果的话,可以考虑 restart()

------解决方案--------------------
你要关闭的窗口是不是通过opensheet打开的?必须是使用opensheet打开且mdiframe为w_main的!
------解决方案--------------------
引用:
你要关闭的窗口是不是通过opensheet打开的?必须是使用opensheet打开且mdiframe为w_main的!

正解,getnextsheet和getfirstsheet只能找到pb8所说的这种窗口,使用其它方式打开的是找不到的。
------解决方案--------------------
引用:
那如果是用open打开的,要把这些窗口关闭,代码怎么写呢?谢谢。


使用Open ( windowvar, windowtype {, parent } )方式打开窗口,并在打开时保存对应的windowvar变量到一个数组中,关闭时从该数组中移除。

在以后需要时遍历该数组,关闭数组中每一个窗口。
  相关解决方案