设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 3007|回复: 5

[模块/函数] [源码]用键盘上下方向键移动连续窗体记录

[复制链接]
发表于 2003-2-17 22:03:00 | 显示全部楼层 |阅读模式
'使用键盘上下方向键来移动连续窗体记录
'实现和数据表同样的功能

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
 楼主| 发表于 2003-2-18 00:30:00 | 显示全部楼层

例子程序


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

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

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
 楼主| 发表于 2003-2-18 06:33:00 | 显示全部楼层
道是没有想到这个问题,不过可以使用判断解决吧
发表于 2003-2-18 16:23:00 | 显示全部楼层
还在的问题是,不知如何判断列表已打开.
我试了 ComboBox 的所有属性,结果是: 无法判断!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-18 13:01 , Processed in 0.109604 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表