注册 登录
编程论坛 VFP论坛

设置当前表单的 WindowType = 1 奇怪,不灵了

ljlhpop 发布于 2022-04-22 17:07, 2227 次点击
各位老师傅,晚上好,
前几天咨询了如何防止重复打开表单的情况,说是可以用设置当前表单的 WindowType = 1 这个方法,
在公司的A 电脑上测试,测试确实可行,不过今天在A电脑上编译为EXE,,COPY 到B电脑上,神奇了,打开一个表单后,还可以通过菜单打开其他表单, 百思不得其解!
另一个事情是我加了日历类进去(FFC 目录),表单加了日历控件,到B电脑上提示MSCOMCT2.OCX 未注册,,这个应该注册一下就可以,应该和上面的问题没有一点关系吧?
请问这是怎么回事?
 
18 回复
#2
laowan0012022-04-22 17:18
直接先把表单属性改成模式(windowtype=1)试试(不是在程序里设置windowtype=1)
菜单方式调用表单我没用过,按说不应该能重复打开
#3
ljlhpop2022-04-22 17:34
回复 2楼 laowan001
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录


试了把所有的表单,包括顶层表单都改了还不行, ,,出现新问题,软件无法正常退出....烦请老师傅指点
#4
fyyylyl2022-04-22 17:49
使用Wexist()函数试试
#5
ljlhpop2022-04-22 17:59
回复 2楼 laowan001
请大师调试时候试试,编译为EXE 再试试
#6
ljlhpop2022-04-22 18:03
回复 4楼 fyyylyl
看了帮助文件,还是不太懂具体怎么用,咋又不行,,
只有本站会员才能查看附件,请 登录
#7
ljlhpop2022-04-22 21:45
回复 2楼 laowan001
请问版主是用什么来调用表单? 有什么好方法烦请推荐一下...
#8
sdta2022-04-22 21:59
从没遇到过楼主所述问题
#9
ljlhpop2022-04-23 06:16
回复 8楼 sdta
死活想不通,,,,请问大师是咋弄的?
#10
laowan0012022-04-23 08:29
回复 3楼 ljlhpop
不能退出的问题是解决了,但方法比较笨。因为没用过菜单,所以应该还有更简便的方法。
下面是具体方法,供参考:

程序代码:

* renshi.mpr 修改了一句
*ON SELECTION PAD _6be11jbyb OF (m.cMenuName) quit
ON SELECTION PAD _6be11jbyb OF (m.cMenuName) do xquit


程序代码:

* 新增 xquit.prg
LOCAL xretu
DO FORM quit TO xretu

IF xretu='0'
    QUIT
ENDIF


表单quit
程序代码:

* form1.init 增加属性
this.AddProperty('Pretu','1')

* form1.unload
RETURN this.Pretu

* command3.click
thisform.pretu = '0'
thisform.Release

* command2.click 最后部分修改
messagebox("备份成功,系统将退出!",0+48,"提示")
thisform.pretu = '0'
*QUIT
set safe on
thisform.Release


[此贴子已经被作者于2022-4-23 09:42编辑过]

#11
laowan0012022-04-23 08:32
以下是引用ljlhpop在2022-4-22 21:45:28的发言:

请问版主是用什么来调用表单? 有什么好方法烦请推荐一下...

我用的就是这种样子。没啥新鲜的,就是一个个的container,在Click事件中do form XXXXX,是从win8那时候改的,只是每个container中间不是图标,而是文字
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-4-23 08:36编辑过]

#12
a575985872022-04-23 16:25
抛砖:
我的做法是在菜单中添加一个跳过条件  当执行本表单时,其他菜单项变灰色,则无法打开其他表单  当关闭本表单时,相关菜单恢复正常,即可调用其他表单  ,用这个笨方法来防止同时打开表单。


[此贴子已经被作者于2022-4-23 16:28编辑过]

#13
ljlhpop2022-04-23 17:01
回复 12楼 a57598587
听起来好像不错,,,,具体代码怎么写? 烦请老师给个参考,多谢!
#14
ljlhpop2022-04-23 17:16
回复 10楼 laowan001
奇怪是以前都正常退出,,感觉是突然不行的,,

另外那个同时间打开同个表单的,我今天试了下,是调试的时候正常,一旦连编为EXE ,马上打开EXE(本机,,不用COPY 到其他机子) ,就变成同时间可以打开同样的表单......无法理解
#15
laowan0012022-04-23 17:51
以下是引用ljlhpop在2022-4-23 17:16:28的发言:

奇怪是以前都正常退出,,感觉是突然不行的,,

另外那个同时间打开同个表单的,我今天试了下,是调试的时候正常,一旦连编为EXE ,马上打开EXE(本机,,不用COPY 到其他机子) ,就变成同时间可以打开同样的表单......无法理解

你这个回复我看不懂,10楼的方法试了没有?结果如何?
回复内容感觉还是在纠结中
#16
ljlhpop2022-04-23 18:19
回复 10楼 laowan001
首先谢谢版主代码,,我已经看晕......
我试了把顶层菜单的...closable改为.T. ...居然可以关闭了..不知道这样关闭会不会出问题?
还一个问题,就是关闭的时候一闪而过,感觉是.Screen 主界面关闭,看上去很不爽,,,,,这个问题咋处理?
#17
ljlhpop2022-04-23 18:21
回复 15楼 laowan001
10楼的没去试,,,比较菜,,已经看晕...目前就用MAIN 顶层表单的 CLOSABLE 改为.T. 来凑合用
#18
laowan0012022-04-23 19:56
以下是引用ljlhpop在2022-4-23 18:19:56的发言:

首先谢谢版主代码,,我已经看晕......
我试了把顶层菜单的...closable改为.T. ...居然可以关闭了..不知道这样关闭会不会出问题?
还一个问题,就是关闭的时候一闪而过,感觉是.Screen 主界面关闭,看上去很不爽,,,,,这个问题咋处理?

我猜你指的是编译后的EXE出现这种情况吧,如果是的话,建议如下:
建立一个主程序,如: main.prg     && 设置为主程序
程序代码:

_screen.visible =.f.

SET TALK OFF
SET SAFETY OFF
SET CENTURY ON
...

DO FORM 主表单
READ EVENTS


主表单的form1.destroy中要有下面的句子
CLEAR EVENTS
#19
ljlhpop2022-04-23 20:04
回复 18楼 laowan001
只有本站会员才能查看附件,请 登录


是调试的时候,,关闭主表单就会一闪而过,,

里面的主程序按您的代码设好了,主表单的DESTORY 也检查了,还是出现一闪而过,看的不爽
1