Discussion:
CAMBIAR FUNCION DE SCROLL (RUEDA DEL MOUSE)
(demasiado antiguo para responder)
PAKO
2004-04-21 22:41:06 UTC
Permalink
Hay alguna forma de cambiar la funcion del Scroll (Rueda del Mouse), ahora
me cambia de registro, pero quisiera q actuara como en Word y Excel,
moviendo el documento de arriba hacia abajo, en este caso, q mueva el
formulario de arriba hacia abajo.. Tengo un Mouse . Marca: Genius

Gracias...
Francisco Carrillo Rodríguez
2004-04-22 06:49:40 UTC
Permalink
Ese tema ya se ha resulto buscalo aqui mismo.

--
Paco Carrillo [No MVP]
Un utópico aspirante a MVP.
Post by PAKO
Hay alguna forma de cambiar la funcion del Scroll (Rueda del Mouse), ahora
me cambia de registro, pero quisiera q actuara como en Word y Excel,
moviendo el documento de arriba hacia abajo, en este caso, q mueva el
formulario de arriba hacia abajo.. Tengo un Mouse . Marca: Genius
Gracias...
Principiante
2004-04-22 07:05:11 UTC
Permalink
Mira en www.lebans.com y busca el ejemplo MouseHook.

Se trata de un ejemplo que evita que los forms cambien de registro
usando la rueda del ratón.

Principiante.
Post by PAKO
Hay alguna forma de cambiar la funcion del Scroll (Rueda del Mouse), ahora
me cambia de registro, pero quisiera q actuara como en Word y Excel,
moviendo el documento de arriba hacia abajo, en este caso, q mueva el
formulario de arriba hacia abajo.. Tengo un Mouse . Marca: Genius
Gracias...
PAKO
2004-04-22 14:40:59 UTC
Permalink
Ya baje el ejemplo pero al no saber Ingles me es dificil comprenderlo, habrá
alguna forma mas sencilla de cambiar esta función, o tendrias la paciencia
de explicarme como funciona detalladamente?

Gracias..
Post by Principiante
Mira en www.lebans.com y busca el ejemplo MouseHook.
Se trata de un ejemplo que evita que los forms cambien de registro
usando la rueda del ratón.
Principiante.
Post by PAKO
Hay alguna forma de cambiar la funcion del Scroll (Rueda del Mouse), ahora
me cambia de registro, pero quisiera q actuara como en Word y Excel,
moviendo el documento de arriba hacia abajo, en este caso, q mueva el
formulario de arriba hacia abajo.. Tengo un Mouse . Marca: Genius
Gracias...
Principiante
2004-04-22 14:58:53 UTC
Permalink
Bueno verás la verdad es que yo me he puesto a mirar como hace para
hacer lo de la rueda en el form, yo tan sólo lo he usado. Te puedo decir
como lo he usado.

1- Meto esto dentro de un módulo:

'Inicio de módulo

Option Compare Database
Option Explicit

Private Declare Function LoadLibrary Lib "kernel32" _
Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long

Private Declare Function FreeLibrary Lib "kernel32" _
(ByVal hLibModule As Long) As Long

Private Declare Function StopMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long, ByVal AccessThreadID As Long, Optional ByVal
blIsGlobal As Boolean = False) As Boolean

Private Declare Function StartMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long) As Boolean

Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

' Instance returned from LoadLibrary call
Private hLib As Long

Public Function MouseWheelON() As Boolean
MouseWheelON = StartMouseWheel(Application.hWndAccessApp)
If hLib <> 0 Then
hLib = FreeLibrary(hLib)
End If
End Function

Public Function MouseWheelOFF(Optional GlobalHook As Boolean = False) As
Boolean
Dim s As String
Dim blRet As Boolean
Dim AccessThreadID As Long

On Error Resume Next
' Our error string
s = "Sorry...cannot find the MouseHook.dll file" & vbCrLf
s = s & "Please copy the MouseHook.dll file to your Windows System
folder or into the same folder as this Access MDB."

' OK Try to load the DLL assuming it is in the Window System folder
hLib = LoadLibrary("MouseHook.dll")
If hLib = 0 Then
' See if the DLL is in the same folder as this MDB
' CurrentDB works with both A97 and A2K or higher
hLib = LoadLibrary(CurrentDBDir() & "MouseHook.dll")
If hLib = 0 Then
MsgBox s, vbOKOnly, "MISSING MOUSEHOOK.dll FILE"
MouseWheelOFF = False
Exit Function
End If
End If

' Get the ID for this thread
AccessThreadID = GetCurrentThreadId()
' Call our MouseHook function in the MouseHook dll.
' Please not the Optional GlobalHook BOOLEAN parameter
' Several developers asked for the MouseHook to be able to work with
' multiple instances of Access. In order to accomodate this request I
' have modified the function to allow the caller to
' specify a thread specific(this current instance of Access only) or
' a global(all applications) MouseWheel Hook.
' Only use the GlobalHook if you will be running multiple instances of
Access!
MouseWheelOFF = StopMouseWheel(Application.hWndAccessApp,
AccessThreadID, GlobalHook)

End Function


'******************** Code Begin ****************
'Code courtesy of
'Terry Kreft & Ken Getz
'
Function CurrentDBDir() As String
Dim strDBPath As String
Dim strDBFile As String
strDBPath = CurrentDb.Name
strDBFile = Dir(strDBPath)
CurrentDBDir = Left$(strDBPath, Len(strDBPath) - Len(strDBFile))
End Function
'******************** Code End ****************

'Fin de módulo

2- en el form que deseo que la rueda del ratón no me pase los registros,
al cargar pongo esto:

'bloqueo de la rueda del ratón
Dim blRet As Boolean
blRet = MouseWheelOFF(False)

Eso es todo.

Recuerda tener en el mismo directorio de la BD la librería MouseHook.dll
para que funcione.

Principiante.
Post by PAKO
Ya baje el ejemplo pero al no saber Ingles me es dificil comprenderlo, habrá
alguna forma mas sencilla de cambiar esta función, o tendrias la paciencia
de explicarme como funciona detalladamente?
Gracias..
Post by Principiante
Mira en www.lebans.com y busca el ejemplo MouseHook.
Se trata de un ejemplo que evita que los forms cambien de registro
usando la rueda del ratón.
Principiante.
Post by PAKO
Hay alguna forma de cambiar la funcion del Scroll (Rueda del Mouse),
ahora
Post by Principiante
Post by PAKO
me cambia de registro, pero quisiera q actuara como en Word y Excel,
moviendo el documento de arriba hacia abajo, en este caso, q mueva el
formulario de arriba hacia abajo.. Tengo un Mouse . Marca: Genius
Gracias...
PAKO
2004-04-22 17:57:39 UTC
Permalink
Me marca error en esta parte

Private Declare Function StopMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long, ByVal AccessThreadID As Long, Optional ByVal
blIsGlobal As Boolean = False) As Boolean


Q ocurre?, el archivo MouseHook esta en el mismo directorio q la MBD.
Post by Principiante
Bueno verás la verdad es que yo me he puesto a mirar como hace para
hacer lo de la rueda en el form, yo tan sólo lo he usado. Te puedo decir
como lo he usado.
'Inicio de módulo
Option Compare Database
Option Explicit
Private Declare Function LoadLibrary Lib "kernel32" _
Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" _
(ByVal hLibModule As Long) As Long
Private Declare Function StopMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long, ByVal AccessThreadID As Long, Optional ByVal
blIsGlobal As Boolean = False) As Boolean
Private Declare Function StartMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long) As Boolean
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
' Instance returned from LoadLibrary call
Private hLib As Long
Public Function MouseWheelON() As Boolean
MouseWheelON = StartMouseWheel(Application.hWndAccessApp)
If hLib <> 0 Then
hLib = FreeLibrary(hLib)
End If
End Function
Public Function MouseWheelOFF(Optional GlobalHook As Boolean = False) As
Boolean
Dim s As String
Dim blRet As Boolean
Dim AccessThreadID As Long
On Error Resume Next
' Our error string
s = "Sorry...cannot find the MouseHook.dll file" & vbCrLf
s = s & "Please copy the MouseHook.dll file to your Windows System
folder or into the same folder as this Access MDB."
' OK Try to load the DLL assuming it is in the Window System folder
hLib = LoadLibrary("MouseHook.dll")
If hLib = 0 Then
' See if the DLL is in the same folder as this MDB
' CurrentDB works with both A97 and A2K or higher
hLib = LoadLibrary(CurrentDBDir() & "MouseHook.dll")
If hLib = 0 Then
MsgBox s, vbOKOnly, "MISSING MOUSEHOOK.dll FILE"
MouseWheelOFF = False
Exit Function
End If
End If
' Get the ID for this thread
AccessThreadID = GetCurrentThreadId()
' Call our MouseHook function in the MouseHook dll.
' Please not the Optional GlobalHook BOOLEAN parameter
' Several developers asked for the MouseHook to be able to work with
' multiple instances of Access. In order to accomodate this request I
' have modified the function to allow the caller to
' specify a thread specific(this current instance of Access only) or
' a global(all applications) MouseWheel Hook.
' Only use the GlobalHook if you will be running multiple instances of
Access!
MouseWheelOFF = StopMouseWheel(Application.hWndAccessApp,
AccessThreadID, GlobalHook)
End Function
'******************** Code Begin ****************
'Code courtesy of
'Terry Kreft & Ken Getz
'
Function CurrentDBDir() As String
Dim strDBPath As String
Dim strDBFile As String
strDBPath = CurrentDb.Name
strDBFile = Dir(strDBPath)
CurrentDBDir = Left$(strDBPath, Len(strDBPath) - Len(strDBFile))
End Function
'******************** Code End ****************
'Fin de módulo
2- en el form que deseo que la rueda del ratón no me pase los registros,
'bloqueo de la rueda del ratón
Dim blRet As Boolean
blRet = MouseWheelOFF(False)
Eso es todo.
Recuerda tener en el mismo directorio de la BD la librería MouseHook.dll
para que funcione.
Principiante.
Post by PAKO
Ya baje el ejemplo pero al no saber Ingles me es dificil comprenderlo, habrá
alguna forma mas sencilla de cambiar esta función, o tendrias la paciencia
de explicarme como funciona detalladamente?
Gracias..
Post by Principiante
Mira en www.lebans.com y busca el ejemplo MouseHook.
Se trata de un ejemplo que evita que los forms cambien de registro
usando la rueda del ratón.
Principiante.
Post by PAKO
Hay alguna forma de cambiar la funcion del Scroll (Rueda del Mouse),
ahora
Post by Principiante
Post by PAKO
me cambia de registro, pero quisiera q actuara como en Word y Excel,
moviendo el documento de arriba hacia abajo, en este caso, q mueva el
formulario de arriba hacia abajo.. Tengo un Mouse . Marca: Genius
Gracias...
Principiante
2004-04-23 07:07:23 UTC
Permalink
Pues el código es copiar pegar del que yo tengo.

Me faltó decirte que cuando cierro el form, la vuelvo a activar:
'activamos la rueda del ratón
Dim blRet As Boolean
blRet = MouseWheelON

No se si eso tendrá algo que ver. Que tipo de mensaje de error te da?

Principiante.
Post by PAKO
Me marca error en esta parte
Private Declare Function StopMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long, ByVal AccessThreadID As Long, Optional ByVal
blIsGlobal As Boolean = False) As Boolean
Q ocurre?, el archivo MouseHook esta en el mismo directorio q la MBD.
Post by Principiante
Bueno verás la verdad es que yo me he puesto a mirar como hace para
hacer lo de la rueda en el form, yo tan sólo lo he usado. Te puedo decir
como lo he usado.
'Inicio de módulo
Option Compare Database
Option Explicit
Private Declare Function LoadLibrary Lib "kernel32" _
Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" _
(ByVal hLibModule As Long) As Long
Private Declare Function StopMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long, ByVal AccessThreadID As Long, Optional ByVal
blIsGlobal As Boolean = False) As Boolean
Private Declare Function StartMouseWheel Lib "MouseHook" _
(ByVal hWnd As Long) As Boolean
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long
' Instance returned from LoadLibrary call
Private hLib As Long
Public Function MouseWheelON() As Boolean
MouseWheelON = StartMouseWheel(Application.hWndAccessApp)
If hLib <> 0 Then
hLib = FreeLibrary(hLib)
End If
End Function
Public Function MouseWheelOFF(Optional GlobalHook As Boolean = False) As
Boolean
Dim s As String
Dim blRet As Boolean
Dim AccessThreadID As Long
On Error Resume Next
' Our error string
s = "Sorry...cannot find the MouseHook.dll file" & vbCrLf
s = s & "Please copy the MouseHook.dll file to your Windows System
folder or into the same folder as this Access MDB."
' OK Try to load the DLL assuming it is in the Window System folder
hLib = LoadLibrary("MouseHook.dll")
If hLib = 0 Then
' See if the DLL is in the same folder as this MDB
' CurrentDB works with both A97 and A2K or higher
hLib = LoadLibrary(CurrentDBDir() & "MouseHook.dll")
If hLib = 0 Then
MsgBox s, vbOKOnly, "MISSING MOUSEHOOK.dll FILE"
MouseWheelOFF = False
Exit Function
End If
End If
' Get the ID for this thread
AccessThreadID = GetCurrentThreadId()
' Call our MouseHook function in the MouseHook dll.
' Please not the Optional GlobalHook BOOLEAN parameter
' Several developers asked for the MouseHook to be able to work with
' multiple instances of Access. In order to accomodate this request I
' have modified the function to allow the caller to
' specify a thread specific(this current instance of Access only) or
' a global(all applications) MouseWheel Hook.
' Only use the GlobalHook if you will be running multiple instances of
Access!
MouseWheelOFF = StopMouseWheel(Application.hWndAccessApp,
AccessThreadID, GlobalHook)
End Function
'******************** Code Begin ****************
'Code courtesy of
'Terry Kreft & Ken Getz
'
Function CurrentDBDir() As String
Dim strDBPath As String
Dim strDBFile As String
strDBPath = CurrentDb.Name
strDBFile = Dir(strDBPath)
CurrentDBDir = Left$(strDBPath, Len(strDBPath) - Len(strDBFile))
End Function
'******************** Code End ****************
'Fin de módulo
2- en el form que deseo que la rueda del ratón no me pase los registros,
'bloqueo de la rueda del ratón
Dim blRet As Boolean
blRet = MouseWheelOFF(False)
Eso es todo.
Recuerda tener en el mismo directorio de la BD la librería MouseHook.dll
para que funcione.
Principiante.
Post by PAKO
Ya baje el ejemplo pero al no saber Ingles me es dificil comprenderlo,
habrá
Post by Principiante
Post by PAKO
alguna forma mas sencilla de cambiar esta función, o tendrias la
paciencia
Post by Principiante
Post by PAKO
de explicarme como funciona detalladamente?
Gracias..
Post by Principiante
Mira en www.lebans.com y busca el ejemplo MouseHook.
Se trata de un ejemplo que evita que los forms cambien de registro
usando la rueda del ratón.
Principiante.
Post by PAKO
Hay alguna forma de cambiar la funcion del Scroll (Rueda del Mouse),
ahora
Post by Principiante
Post by PAKO
me cambia de registro, pero quisiera q actuara como en Word y Excel,
moviendo el documento de arriba hacia abajo, en este caso, q mueva el
formulario de arriba hacia abajo.. Tengo un Mouse . Marca: Genius
Gracias...
Loading...