Office中国论坛/Access中国论坛

标题: [源码]用键盘上下方向键移动连续窗体记录 [打印本页]

作者: huanghai    时间: 2003-2-17 22:03
标题: [源码]用键盘上下方向键移动连续窗体记录
'使用键盘上下方向键来移动连续窗体记录
'实现和数据表同样的功能

Private Sub 客户ID_KeyDown(KeyCode As Integer, Shift As Integer)
    Call myMoveRecord(KeyCode, Shift, Me.客户ID)
End Sub

Public Function myMoveRecord(KeyCode As Integer, Shift As Integer, ctl As Control)

On Error GoTo err

Debug.Print KeyCode

Select Case KeyCode
Case 38
    DoCmd.GoToRecord , , acPrevious
Case 40
    DoCmd.GoToRecord , , acNext
End Select

ctl.SetFocus

Exit Function

err:
    If err.Number <> 2105 Then
        MsgBox err.Number & err.Description
    End If
   
End Function

作者: huanghai    时间: 2003-2-18 00:30
标题: 例子程序

[attach]55063[/attach]
作者: WTM1    时间: 2003-2-18 01:15
谢谢!1
作者: Roadbeg    时间: 2003-2-18 04:36
看我的方法.
不过,这两种方法都有一个问题,就是不能应用于组合框.
因为:如果组合框的下拉列表已打开,此时按上下箭头照理应该是在列表中移动而不是在记录间移动.但此方法没有判断列表已打开的语句.
但,如何判断列表已打开呢?
请教各位高手!

Private Sub MoveRec(KeyCode As Integer, Optional Shift As Integer = 0)
On Error GoTo Doerr
   
'    AltDown = Shift And acAltMask > 0
   
    If Shift = 0 Then
        Select Case KeyCode
            Case vbKeyUp
                Me.Recordset.MovePrevious
            Case vbKeyDown                                  '取消自动添加
                If Me.Recordset.EOF Then
                    Me.Recordset.AddNew
                    Me.Recordset.MoveNext
                    txtPN.SetFocus
                Else
                    Me.Recordset.MoveNext
                End If
        End Select
    End If
   
    Exit Sub
   
Doerr:
End Sub

作者: huanghai    时间: 2003-2-18 06:33
道是没有想到这个问题,不过可以使用判断解决吧
作者: Roadbeg    时间: 2003-2-18 16:23
还在的问题是,不知如何判断列表已打开.
我试了 ComboBox 的所有属性,结果是: 无法判断!!!




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