接下来麻烦也就跟着来了:
我每次程序起动,去点那个标签,弹出窗体后,总会有一个"Web"工具栏跟着弹出,当Web工具栏弹出后,手工把它关闭后,再次单击标签,它就不会出现了,但当退出程序后,再次启动程序后单击标签,它依然会弹出.烦!!!
这个工具栏对我来说是无一点用途的,当然要把它屏敝掉.如何屏敝它呢?
我首先想到的就是在MyRun过程中首先运行CommandBars("Web").Visible = False,一测试,竟无效.于是,我试图到自定义对话框中把它删除掉算了,反正这个工具栏也几乎无用途,到那一看,傻眼了,这是系统工具栏,不允许删除.
NND!问题出在哪呢?是不是这个超链接有什么玄机,在我的MyRun过程后运行了呢?我开始这么考虑了(后来证明,此玄机确实存在,陈格也是这么解释的,所有问题都是它在作怪),于是,我把CommandBars("Web").Visible = False放在我的MyRun过程最后试试,依然不行.把这句命令移到我的程序启动代码中,还是不起作用.呵呵,这烦恼开始大发了.最后,还是Grant帮我解决了这个问题.竟然是CommandBars("Web").Enabled = False有效,呵呵,竟想不到啊.
事情解决了?等等...新的问题接着又来了.
我打开的"窗体2"是一个对话框形式的窗体(模式:是;弹出:是),但打开后,它竟没有获得焦点,但焦点在哪呢?我不知道,也想不通它不获得焦点,还能有谁获得了那个焦点,总之,弹出的"窗体2"是没有自动获得焦点.
后来,Victor_Duane发现了一个小巧门,就是在打开"窗体2"的命令行上,带上一个acDialog参数,问题就可以解决了.一测试,果然,看来这个参数专克这个问题了,哈哈...高兴啊!没有解决不了的问题!
在后面的操作中,这个acDialog又给我带来了新的问题(唉...问题没完没了了).
我的原设计"窗体2"是一个无边框的窗体,但这个acDialog参数与无边框也是有冲突的,也就是说,带了这个参数,打开的窗体全部都自动带上了标题与边框.这可是个不小的难题了,一方面,要让"窗体2"能自动获得焦点,就必须带上这个参数,另一方面,带上这个参数,"窗体2"就会带上边框.真是冲突碰上冲突了.
我想啊想,就是想不到一个很好的解决方案.
后来,我又把这问题扔给Grant了,要么说Grant厉害呢!他竟能想出一个超简单的解决方案:在打开"窗体2"的命令行上不要带acDialog参数,在"窗本2"的模块里写代码如下:
Private Sub Form_Timer()
Me.SetFocus
Me.TimerInterval = 0
End Sub
把"窗体2"的计时器间隔设为1(没想到,这1微妙竟能帮大忙了),就这样,问题又解决了.
后序:
我又测试了更多的东东,就算我对"窗体2"并不要求无边框,而不用Timer事件,让"窗体2"自己获得焦点,转而用acDialog参数,那么,如果我从"窗体2"再放一个按钮,关闭"窗体2",打开"窗体3"(也同样是模式:是;弹出:是),代码如下:
Private Sub Command1_Click()
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "窗体3"
End Sub
这样的效果是:"窗体3"也同样没有获得焦点.虽然它也是对话框式的窗体,除非,在打开"窗体3"的命令上也带上acDialog参数.由此可见,那个超链接的玄机依然又发挥了它的魔力,只不过,一直是acDialog参数在压着它,一旦它瞅准机会,还是会爆发的,用刘天王的话说:"你知不知道,我一直压着火呢",哈哈...至于它到底是什么玄机,不得而知.