Accessフォーラムの過去ログIndexページAccess超初心者対象ForumAccess初級者対象ForumAccess初・中級者対象ForumAccess VBA Tips ForumDAO、ADO、SQL Forumサポートフォーラム

     

No.8905 マウスのスクロール

■8905 /inTopicNo.1)  マウスのスクロール
    □投稿者/ いわたか 一般(2回)-(2003/09/18(Thu) 08:26:58)

      AC Ver:[AC2000] 
      OS Ver:[WinXP] 

      マウスのホイールをスクロールするとレコードが
      移動しますが、それを移動しないように制御する方法はあるみたいですが?
      過去ログとか調べてみましたが詳しい方法が見つかりません
      どなたか詳しく教えてください



■8907 /inTopicNo.2)  Re[1]: マウスのスクロール
    □投稿者/ イケガミ 主任(959回)-(2003/09/18(Thu) 09:48:41)

      AC Ver:[Ac2000] 


      ホイール
      
      をキーワードに検索すると、ヒットしますよ。
      



■8909 /inTopicNo.3)  Re[2]: マウスのスクロール
    □投稿者/ いわたか 一般(3回)-(2003/09/18(Thu) 11:40:42)

      AC Ver:[AC2000] 


      > ホイール
      > をキーワードに検索すると、ヒットしますよ。

      見てみましたがいまいちわかりません
      どなたか詳しく教えてください



■8910 /inTopicNo.4)  Re[3]: マウスのスクロール
    □投稿者/ しゃく 一般(36回)-(2003/09/18(Thu) 12:13:33)

      AC Ver:[2000] 


      参考URL
      http://www.accessclub.jp/bbs3/0004/1823.html#1857
      http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q308636&


      ActiveX DLLを使わない方法(AC)

      1.AccessのVBE画面を表示します。

      2.メニューから挿入(I)→クラスモジュール(C)を実行します。
      プロジェクトエクスプローラにClass1が挿入されます。
      Class1モジュールの名前をCMouseWheelに変更します

      3.クラスモジュールに貼り付けるコード

      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



■8911 /inTopicNo.5)  Re[4]: マウスのスクロール
    □投稿者/ しゃく 一般(37回)-(2003/09/18(Thu) 12:14:51)

      AC Ver:[2000] 


      続き

      4.メニューから挿入(I)→標準モジュール(M)を実行します。
      プロジェクトエクスプローラにModule1(環境により変わる)が挿入されます。

      5.(標準モジュールに貼り付けるコード)貼り付けます。その際

      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



■8912 /inTopicNo.6)  Re[5]: マウスのスクロール
    □投稿者/ しゃく 一般(38回)-(2003/09/18(Thu) 12:16:10)

      AC Ver:[2000] 


      6.マウスのホイールを無効にしたいフォームに下記コードを記述する

      Private WithEvents clsMouseWheel As CMouseWheel

      Private Sub Form_Load()
        Set clsMouseWheel = New CMouseWheel
        Set clsMouseWheel.Form = Me
        clsMouseWheel.SubClassHookForm
      End Sub

      Private Sub Form_Close()
        clsMouseWheel.SubClassUnHookForm
        Set clsMouseWheel.Form = Nothing
        Set clsMouseWheel = Nothing
      End Sub

      Private Sub clsMouseWheel_MouseWheel(Cancel As Integer)
        'MsgBoxがいらなければ以下の行を削除します。
        MsgBox "マウスホイール使用不可"
        Cancel = True
      End Sub

      8.VBE画面を閉じ、データベースウインドウからモジュールを選択します。

      9.Accessを一旦閉じます。

      10.再度Accessを開き該当フォームを開きます。
      マウスホイールが無効になっているはず。



■8918 /inTopicNo.7)  Re[6]: マウスのスクロール
    □投稿者/ いわたか 一般(4回)-(2003/09/19(Fri) 09:02:09)

      AC Ver:[AC2000] 


      できました
      ありがとうございます

--- このBBSは、Microsoft Access Club が運営しています ---