Office中国论坛/Access中国论坛

标题: 求助关于窗体获得焦点事件 [打印本页]

作者: mrl    时间: 2004-4-29 03:56
标题: 求助关于窗体获得焦点事件
为何窗体获得/失去焦点事件没反应,师兄们能帮忙改一下吗?详见付件。[attach]4477[/attach]
作者: mrl    时间: 2004-5-1 06:59
高难度!
顶一下!
作者: sunredday    时间: 2004-5-1 07:47
[attach]4511[/attach]
作者: sunredday    时间: 2004-5-1 16:09
当这些事件发生时,如果要运行宏或事件过程,请将 OnGotFocus 或 OnLostFocus 属性设置为宏的名称或 [事件过程]。

当焦点为响应用户操作而移动时,这两事件发生。例如,按下 TAB 按键、单击对象,或在 Visual Basic 中使用 SetFocus 方法,在宏中使用 SelectObject、GoToRecord、GoToControl 或 GoToPage 操作。

控件只有在它的 Visible 和 Enabled 属性都设置为 Yes 时才能获得焦点。窗体只有在它没有控件或所有可见的控件都失效时,才能获得焦点。如果窗体包含了任何可见的、有效的控件,则窗体的 GotFocus 事件不会发生。

当 GotFocus 事件发生时,可以通过运行宏或事件过程来指定窗体或控件获得焦点时要进行的操作。例如,通过将 GotFocus 事件过程附加到窗体上的每一控件,可以在文本框中显示简要的帮助或消息来指引用户使用应用程序。也可以根据控件是否获得焦点,在视觉上提供有关控件有效、失效的提示。

注意   在按下 TAB 键时,如果要自定义焦点在窗体控件间移动的顺序,请设置控件的 Tab 键次序或指定控件的访问键。

GotFocus 事件与 Enter 事件不同之处在于:GotFocus 事件在控件每次获得焦点时都发生。例如,如果用户单击窗体上的复选框,然后单击报表,最后再单击窗体上的复选框将它显示为前台对象。GotFocus 事件在复选框两次获得焦点时都发生。而 Enter 事件只在用户第一次单击复选框时才发生。GotFocus 事件在 Enter 事件之后发生。

LostFocus 与 Exit 事件不同之处在于:LostFocus 事件发生在控件失去焦点时。Exit 事件只有当同一窗体上一个控件失去焦点,而另一控件获得焦点之前才会发生。LostFocus 事件发生在 Exit 事件之后。

如果将焦点移动到窗体上的某一控件(该控件在窗体上没有焦点),窗体上拥有焦点的控件将在另一控件(焦点移到)的 Enter 和 GotFocus 事件之前发生 Exit 和 LostFocus 事件。

如果使用鼠标将焦点从主窗体上的控件移动到该窗体的子窗体控件上,下列事件将发生:

Exit(主窗体上的控件)



LostFocus(主窗体上的控件)



Enter(子窗体控件)



Exit(子窗体上具有焦点的控件)



LostFocus(子窗体上具有焦点的控件)



Enter(子窗体上焦点将移到的控件)



GotFocus(子窗体上焦点将移到的控件)

如果在子窗体上要移动到的控件原来就拥有焦点,则该控件的 Enter 事件和 GotFocus 事件都不会发生,但是子窗体的 Enter 事件则会发生。如果把焦点从子窗体上的控件移动到主窗体上的控件,子窗体上控件的 Exit 和 LostFocus 事件将不会发生,只有子窗体本身的 Exit 事件和主窗体上控件上的 Enter 和 GotFocus 事件才会发生。

注意   一般使用鼠标或按键(例如 TAB 键)将焦点移动到另一控件上。这样除了产生本主题讨论的事件外,还将导致 Mouse 或 Keyboard 事件的发生。

在两个打开的窗体之间切换时,第一个窗体将发生 Deactivate 事件,第二个窗体将发生 Activate 事件。如果该窗体不包含可见的、有效的控件,则第一个窗体的 LostFocus 事件将发生在 Deactivate 事件之前,而第二个窗体的 GotFocus 事件则将发生在 Activate 事件之后。

作者: 宿命的风    时间: 2004-5-1 21:19
很实用!
作者: mrl    时间: 2004-5-2 07:54
以下是引用sunredday在2004-5-1 8:08:43的发言:
在两个打开的窗体之间切换时,第一个窗体将发生 Deactivate 事件,第二个窗体将发生 Activate 事件...............


在 Deactivate 事件 和 Activate 事件 中写入代码均不执行,我本意是在两个窗体之间切换时激活的窗体中的子窗体才可见,否则为子窗体隐藏。效果如标题栏激活时为兰色,否则为灰色。各位高手有方法吗?请指教!





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