注册 登录
编程论坛 VFP论坛

大家如何限制窗口的多次打开?

yuantao100 发布于 2020-07-27 11:58, 3412 次点击
我的VFP,所有菜单里的表单,在菜单里选一次就运行一次,好多同志只开窗口不去关,就会越来越多,
有没有办法检测如果该窗品没有打开,就打开表单;如果已经打开了,就直接激活该表单窗口?
11 回复
#2
yuantao1002020-07-27 12:02
我想把代码直接写在表单里面。。。。不再新建文件。。。
#3
zhken2020-07-27 12:20
设置一个公共变量,如 PUBLIC caidan_caption
打开此菜单时令 caidan_caption='此菜单窗口名',关闭时 caidan_caption='' 。
在打开前查找这个窗口,查到有,就定位并设置焦点.没找到或 caidan_caption=''时就打开这个窗口.   
#4
yuantao1002020-07-27 14:30
谢谢啦!我最后是这样处理的:

在表单的load事件里面, 这样写的:
if type("windows_flag_101")="U"
    public windows_flag_101
    windows_flag_101=1
else
    return .F.
endi
............................


在表单的退出按钮里写上:
if messagebox("确定要通出程序吗?",32+1,"退出")=1
    rele windows_flag_101
    thisform.release
endi
#5
xuminxz2020-07-27 15:05
楼主说的窗口可能特指表单吧,如果是的话,重点似乎不在检测。一般不建议同时打开多个兄弟表单,如特殊需要,建议用标签页。如果是父子表单,建议为模式表单,这样不会重复打开。
一个应用软件不能对使用者提过高的要求,只要允许的操作就应该是对的,起码不能让系统崩溃。
#6
hu9jj2020-07-27 15:23
其实用窗口检测函数更简便:
if wexist('表单名')
    ACTIVATE WINDOW 表单名
else
    DO FORM 表单名
endif
#7
吹水佬2020-07-27 15:44
以下是引用hu9jj在2020-7-27 15:23:27的发言:

其实用窗口检测函数更简便:
if wexist('表单名')
    ACTIVATE WINDOW 表单名
else
    DO FORM 表单名
endif

这个可以,判断表单name属性定义的表单名
也可以枚举表单对象
#8
zhken2020-07-27 18:12
回复 6楼 hu9jj
ACTIVATE WINDOW 表单名     有时侯不起作用,没有反应,不知为什么。用API灵光一点。
#9
瓜瓜19902020-07-27 23:16
IF WEXIST("表单名") AND !ISNULL(表单名) AND VARTYPE(表单名)="O"
    表单名.show()
else
    do form 表单名
endif
#10
wengjl2020-07-28 07:59
用模式表单,只打开一个,必须关了才可打开 另一个
#11
gs25367856782020-07-30 10:51
网友的思想可能是要求在打开窗口时,菜单上的命令项失效
在关闭窗口时,菜单上的命令项恢复
#12
永远的小菜2020-09-11 16:41
谢谢各位,收藏了,避免重复打开表单方案
1