设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1351|回复: 3
打印 上一主题 下一主题

[窗体] 我在窗体录入记录时

[复制链接]
跳转到指定楼层
1#
发表于 2004-2-21 05:05:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在窗体录入记录时用滚轮滚一下就到下一条记录了? 怎样才能让滚轮不起作用?   谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2004-2-21 05:26:00 | 只看该作者
http://www.office-cn.net/bbs/dispbbs.asp?BoardID=2&replyID=65032&ID=13161&skin=1
http://www.office-cn.net/bbs/dispbbs.asp?BoardID=2&replyID=41779&ID=8256&skin=1
3#
发表于 2004-2-21 06:58:00 | 只看该作者
专题地址:
http://access911.net/index.asp?board=4&recordid=73FAB71E1ADC

简述:
如何在Access2000窗体中检测并禁止通过鼠标滚轮滚动到其他记录
默认情况下,你可以通过使用鼠标滚轮从一条记录滚动到另一条记录,但是Access本身似乎并没有提供对鼠标滚轮的完全控制和检测的方法(关于这点,你可以参考本站文章《如何禁用鼠标滚轮?》)。
这里,你可以通过两种方法来检测并控制鼠标滚轮:一、用 VB VC 编写 ActiveX DLL,通过在Access中引用该DLL来解决;(MS 推荐)二、你可以在 Access 本身的 VBA 代码中引用 API 函数建立子类来解决问题。

  



<<< 隐藏附加信息
用api禁止鼠标滚轮
作者:MS(cg1修正)  摘自:access911.net  编辑:cg1  更新日期:2003-3-25  浏览人次:87




用api禁止鼠标滚轮
注意,以下代码摘自 ms 支持网站,我只是做了一些小的修正
如何在Access2000窗体中检测并禁止通过鼠标滚轮滚动到其他记录
    大家都知道,在Access的默认情况下,你可以通过使用鼠标滚轮从一条记录滚动到另一条记录,但是Access本身似乎并没有提供对鼠标滚轮的完全控制和检测的方法(关于这点,你可以参考本站文章《如何禁用鼠标滚轮?》)。
    这里,你可以通过两种方法来检测并控制鼠标滚轮:
    一、用 VB VC 编写 ActiveX DLL,通过在Access中引用该DLL来解决;(MS 推荐)
    二、你可以在 Access 本身的 VBA 代码中引用 API 函数建立子类来解决问题。

方法一:


    以下就是方法一的操作过程:
1、打开 Microsoft Visual Basic 6.0.
2、建立一个新的 ActiveX DLL 项目并打开
3、将以下代码加入一个类模块中:
Option Compare Text
Option Explicit
Private frm As Object
Private intCancel As Integer
Public Event MouseWheel(Cancel As Integer)
Public Property Set Form(frmIn As Object)
    Set frm = frmIn
End Property
Public Property Get MouseWheelCancel() As Integer
    MouseWheelCancel = intCancel
End Property
Public Sub SubClassHookForm()
    lpPrevWndProc = SetWindowLong(frm.hwnd, GWL_WNDPROC, _
                                    AddressOf WindowProc)
      Set Cmouse = Me
   End Sub
Public Sub SubClassUnHookForm()
    Call SetWindowLong(frm.hwnd, GWL_WNDPROC, lpPrevWndProc)
End Sub
Public Sub FireMouseWheel()
    RaiseEvent MouseWheel(intCancel)
End Sub

                    
4、命名为: CMouseWheel
5、修改以下属性:
   Name: CMouseWheel
   Instancing: 5 - MultiUse
6、新建一个标准模块,然后加入以下代码:

Option Compare Text
Option Explicit
Public Cmouse As CMouseWheel
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, _
    ByVal nIndex As Long, _
    ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" _
    (ByVal lpPrevWndFunc As Long, _
     ByVal hwnd As Long, _
     ByVal msg As Long, _
     ByVal wParam As Long, _
     ByVal lParam As Long) As Long
     
Public Const GWL_WNDPROC = -4
Public Const WM_MouseWheel = &H20A
Public lpPrevWndProc As Long
Public Function WindowProc(ByVal hwnd As Long, _
    ByVal uMsg As Long, _
    ByVal wParam As Long, _
    ByVal lParam As Long) As Long
    Select Case uMsg
        Case WM_MouseWheel
            Cmouse.FireMouseWheel
            If Cmouse.MouseWheelCancel = False Then
                WindowProc = CallWindowProc(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
            End If
            
        Case Else
           WindowProc = CallWindowProc(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
    End Select
End Function


7、更改项目名称为:MouseWheel
8、保存该项目、类模块、标准模块
basSubClassWindow.bas
CMouseWheel.cls
MouseWheel.vbp respectively.
9、用“文件”菜单上的 建立 MouseWheel.dll 生成一个dll文件。
10、退出 VB 并打开 Access,打开示例数据库 Northwind.mdb
11、转到 VBE 界面,打开 form_Customers 类模块
12、工具菜单 ->  引用 ,然后找到你刚才生成的 MouseWheel.DLL 并选勾。
13、加入以下代码到该模块:
Option Compare Database
Option Explicit
Private WithEvents clsMouseWheel As MouseWheel.CMouseWheel
Private Sub Form_Load()
    Set clsMouseWheel = New MouseWheel.CMouseWheel
    Set clsMouseWheel.Form = Me
    clsMouseWheel.SubClassHookForm
End Sub
Private Sub Form_Close()
   clsMouseWheel.SubClassUnHookForm
   Set clsMouseWheel.Form = Nothing
   Set clsMouseWhee
4#
发表于 2007-12-5 11:40:40 | 只看该作者
学习学习学习学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-21 16:43 , Processed in 0.085697 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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