主题:如何限制表单同时被打开的个数?
有约故人来
[专家分:50] 发布于 2009-05-08 10:41:00
设置非模式表单,可同时打开多个表单,但同时一个表单可能被打开多次,能不能控制一个表单同时最多只能被打开一次?谢谢!
回复列表 (共6个回复)
沙发
fyyylyl [专家分:8550] 发布于 2009-05-08 10:58:00
If !Wexist("FormName")
Do Form FormName
Endif
板凳
有约故人来 [专家分:50] 发布于 2009-05-09 08:53:00
谢谢一楼的指点!我在下拉菜单中用了您提供的语句,还是可以几次同时打开一个表单。不知是哪里出了问题?
3 楼
zhouypcost [专家分:40] 发布于 2009-05-30 17:15:00
if _SCREEN.FORMCOUNT>3 &&打开表单数上限
stor _screen.forms(2).name to formanme
messagebox('你已經打開了一個窗口:'+formanme+','+chr(13)+chr(13)+'請關閉後再...',48,'提示')
retu .f.
ENDIF
4 楼
Ilikefox [专家分:5770] 发布于 2009-05-30 21:26:00
fyyylyl网友说的不错,只是他没有进一步指明。
Wexist("FormName") 函数可以判断Name属性是"FormName"的窗子是否存在。在他的代码中,窗子的文件名和窗子的Name属性是一致的,因此没问题。
你说不行,那估计是你的窗子的文件名和窗子的Name属性不一致。比如你的窗子文件名叫做“myform.scx”,而窗子的Name属性是“form1”,这就会出问题。当然不是说两者必须一致,假如你就是类似我举例的那样,可以改为
If !Wexist("form1")
Do Form myform
Endif
不过这种方式还要求你的每个不同的窗子必须用不同的Name,如果你有两个(或多个)不同窗子的Name相同,那就会出现打开这个打不开那个的情况。
Wexist()函数仅是一个保留函数,为早期低版本Fox兼容而留下的。虽然照样可用。
比较好的方式是这样的,do from命令启动一个窗子时,会生成对应窗子文件名的全局变量,一般的通过判断该变量来判断该窗子是否已经启动。
比如还是按照上面说的你的窗子文件名叫做“myform.scx”,则
if TYPE("myform")="U" OR ISNULL(myform)
Do Form myform.scx
endif
5 楼
yjr3032570 [专家分:3360] 发布于 2009-06-01 07:41:00
ilikefox 本论坛能读懂程序非你莫熟也!
6 楼
北京惬意 [专家分:1330] 发布于 2009-06-03 14:10:00
楼主你好:
我没时间看上面的回帖,就你提的问题很简单呀,就是把调用表单那个位置锁死。反正我都是那么解决的,信不信由你。哈哈!
我来回复