Office中国论坛/Access中国论坛

标题: 如何将某个窗体设为活动窗口(移到最顶端) [打印本页]

作者: zyp    时间: 2010-7-30 11:41
标题: 如何将某个窗体设为活动窗口(移到最顶端)
Access2000中打开了多个窗体, 请问如何用VBA代码将某个窗口显示到最前端

谢谢!
作者: t小宝    时间: 2010-7-30 12:17
激活窗体自然会显示在前端,代码:Forms("窗体A").SetFocus
如果要始终显示在最前,要用API,论坛有例子,搜索一下


作者: zyp    时间: 2010-7-30 14:34
激活窗体自然会显示在前端,代码:Forms("窗体A").SetFocus
如果要始终显示在最前,要用API,论坛有例子, ...
t小宝 发表于 2010-7-30 12:17


谢谢T小宝版主!
我忘了描述具体的环境了: 我是用到系统主切换界面中,当用户输入密码后进入到主切换界面, 在该form的load事件中检测用户是否有未完成的工作(从一个小小的工作备忘处理程序中检测),如果有,则提示是否查看未完成的工作, 如果用户选择"是",则打开工作备忘窗口, 核心代码如下:
me.visible=false
docmd.openform "WorkNote"
forms("WorkNote").Setfocus    '这名按T小宝版主的做法加的
而且在这代码之后并没有其它代码

但奇怪的是WorkNote窗口虽然打开了,但目前的主界面并没有被隐藏, 而且窗口还在WorkNote的上面.
我以为是写在load事件不行(因为load事件还会执行On_Activate、On_Current事件,所以将这些代码移到打开窗口所激发的最后一个事件On_Current事件中,问题还是一样。

但是,假如将这些代码写在主切换窗口的事件中则可以正常执行并获得预期的结果








作者: zyp    时间: 2010-7-30 14:48
我现在是采用On Timer事件来曲线完成目标,间隔设为100,执行三次后(300毫秒)才执行那段代码,这样就没问题
作者: t小宝    时间: 2010-7-30 15:37
象这种情况采用time事件是正确的。
还有一个方法可以参考,在切换窗体的加载事件中用acDialog参数打开窗体:
  DoCmd.OpenForm "WorkNote", , , , , acDialog
只用这句代码就行了。这样切换窗体是隐藏的,关闭WorkNote窗体后才会显示。
作者: zyp    时间: 2010-7-30 17:18
象这种情况采用time事件是正确的。
还有一个方法可以参考,在切换窗体的加载事件中用acDialog参数打开窗体 ...
t小宝 发表于 2010-7-30 15:37



用对话框窗口打开是可以的, 谢谢!





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3