以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这算不算Bug啊  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27031)

--  作者:atmetmicoo
--  发布时间:2012/12/20 11:22:00
--  这算不算Bug啊

庞老师,我发现一个奇怪的问题,请帮忙瞧瞧:

 

窗口A中单击某按钮,click代码为:
Forms("B").open
Forms("B").Controls("Button1").performclick()
但是在关闭B窗口之后,会提示 B窗口已经关闭,不能调用Button1控件 ,代码没什么问题,我临时做了个项目试也是这结果,是不是我的安装版本出现问题,案例如下:
 


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb

 


 


图片点击可在新窗口打开查看此主题相关图片如下:错误提示如下
图片点击可在新窗口打开查看
[此贴子已经被作者于2012-12-20 11:24:39编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/12/20 11:28:00
--  

不是bug,窗口关闭了,就不能调用其中的控件了,这是可以理解的。

如果要复用这段代码,你可以做成自定义函数:

 

http://www.foxtable.com/help/topics/1486.htm

 

 


--  作者:atmetmicoo
--  发布时间:2012/12/20 11:30:00
--  

谢谢狐爸的及时回复

 

问题是我只有点击 A窗口按钮的时候才会运行这个代码才对,为什么我关闭B窗口也要运行A窗口Button1按钮的代码呢?


--  作者:atmetmicoo
--  发布时间:2012/12/20 11:34:00
--  

狐爸,补充一下:我昨天在调试的时候,没碰到这个问题,代码没有任何修改,今天重新打开电脑之后就出现这个问题了,不知道您那边打开我这个项目会不会有这个错误提示。


--  作者:狐狸爸爸
--  发布时间:2012/12/20 11:47:00
--  

以为你A窗口的按钮代码为:

Forms("B").open
Forms("B").Controls("Button1").performclick()

 

单击这个按钮首先执行:

Forms("B").open

因为B窗口是模式窗口,所以直到关闭B窗口,才会执行第二行代码:

Forms("B").Controls("Button1").performclick()

 

因为此时B窗口已经关闭,所以提示错误。

 

你将B窗口改为非模式窗口,例如独立窗口,就不会有这个问题。


--  作者:lin_hailun
--  发布时间:2012/12/20 11:59:00
--  
 看了一下,因为你的窗口2是模式窗口。

 执行流程是这样的。

Forms("窗口2").open()
\'在这里暂停,先去处理窗口,窗口关闭以后再执行下面的代码。
Forms("窗口2").Controls("Button1").performclick()

--  作者:atmetmicoo
--  发布时间:2012/12/20 12:06:00
--  

谢谢狐爸,林老师

 

我犯的错误是不了解模式窗口的特性,现在没问题了,好吃午饭了。