MS-Access 2010: 带有项目名称的主表单和带有项目操作的子表单(操作日期等)。 目的=仅使用鼠标快速咨询数据,无需任何编辑。
想法:只需移动鼠标即可切换到子窗体并返回到主窗体。
从mainform到子窗体(子窗体中的代码)完美无缺:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Forms![MyMainForm]![MySubForm].SetFocus
End Sub
我尝试使用类似的过程从子窗体返回到mainform。但是,一旦鼠标位于子窗体上,将鼠标移动到主窗体上或在主窗体的字段上,或者甚至单击主窗体的背景都不会触发所需的鼠标操作(通过将Stop插入相应的代码来检查)。顺便说一下,单击mainform的背景并将焦点放在mainform上会触发鼠标操作,但.SetFocus会导致错误(在那里没有允许的操作)。
因此,将焦点设置回主窗体的唯一方法似乎是单击主窗体上的字段。但这对用户来说并不是不言而喻的。
答案 0 :(得分:0)
我需要的是通过移动鼠标将焦点设置在主窗体上。当然,首先必须将焦点设置在主窗体上,然后才能将焦点放在主窗体上的任何字段上。问题是主要表单本身及其背景都不会触发鼠标操作,只要焦点在子表单上,就可以执行操作.SetFocus。
然而,我设计了一个可行的解决方法:在主窗体底部的整个窗体宽度上,我创建了一个大的,透明的,未绑定的虚拟字段,鼠标在离开子窗体时自动穿过该字段。以下代码位于主窗体模块中:
Private Sub Dummy_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Me.SetFocus
Me![Empty].SetFocus
End Sub
空是角落中的一个非常小的未绑定字段,焦点在第二步中设置,其中光标闪烁以指示主窗体具有焦点。
有效!只有Dummy字段必须足够大,否则鼠标的交叉时间太短而无法触发所需的操作;这限制了主要形式的设计可能性。