翻译:如何用Shift键和Tab键实现光标在主窗体和子窗体控件的自由跳转.
原作者:ATTAC 咨询组织
主窗体当前光标所在控件的下一个按件是子窗体时,这时用户按Tab键或回车键,光标会自动跳到子窗体的第一个控件。但是, 如果用户按住Shift键和然后按Tab键(想返跳回主窗体), 不是跳回主窗体,而是光标会跳到所在子窗体最后的控件(光标在第一记录的第一个控件时),或跳到上一条记录最后一个控件。同样, 如果光标在子窗体最后一个控件时,按回车键, 他们会跳到所在子窗体的下一条记录。而不能跳回主窗体的下一个控件。
这个问题可以在子窗体的第一条记录的第一个控件和最后一条记录的最后一个控件使用“键按下事件”,实现实现主窗体和子窗体的自由跳转。代码如下。 (注意:子窗体引用主窗体时可以使用parent这个属性):
1.在模块的声明页里,写入下面代码:
Public Const Key_Tab = &H9 '在这里记得要加上Public,否则窗体无法调用
Public Const Key_Return = &HD
Public Const SHIFT_MASK = 1
2.在子窗体第一个控件的键按下事件里:写入以下代码:
ShiftDown = (Shift And SHIFT_MASK) > 0
If KeyCode = Key_Tab Then
If ShiftDown Then
Me.Parent!某控件.SetFocus
KeyCode=0
End If
End If
在子窗体最后一个控件的键按下事件里:写入以下代码:
ShiftDown = (Shift And SHIFT_MASK) > 0
If KeyCode = Key_Tab Then
If ShiftDown = 0 Then
KeyCode = 0
Me.Parent!某控件.SetFocus
End if
ElseIf KeyCode = Key_Return Then
KeyCode = 0
Me.Parent!某控件.SetFocus
Else Exit Sub
End If
如果是直接跳到下一条记录而不想跳回主窗体,只要去掉“Me.Parent!某控件.SetFocus”这行即可。
[em01][em01][em01]
[此贴子已经被作者于2005-8-15 17:19:08编辑过]
|