Desactivar rueda del ratón en un formulario

Tengo un problemilla que estoy seguro que sabréis resolverme. Estoy haciendo una aplicación en Access 2003 de una facturación. Es un formulario un poco largo, y cada vez que intento desplazarme con la rueda del ratón me cambia el registro que tengo en la pantalla. He buscado varias soluciones por internet pero no me funcionan:
1) MouseHook.DLL (la cargo y no funciona)
2) Con la solución que aporta Microsoft en http://support.microsoft.com/kb/278379/es (sólo me funciona en Neptuno, en mi formulario salen errores al abrir y cerrar el formulario, aparte que no es lo que busco)
3) Con el código: Private Sub Form_Current()
'Al activar el registro
'Anular el movimiento de la rueda del ratón.
If Not Me.RecordsetClone.NoMatch Then
Me.Bookmark = Me.RecordsetClone.Bookmark
End If
End Sub
(Este es el único que me ha funcionado, pero sólo parcialmente. Accede al primer registro pero no deja acceder a uno nuevo ni con macros, ni pinchando en el selector de registro nuevo, ni nada. Sería ideal si eso lo hiciese en un formulario nuevo)
4) Con un control de ficha (tampoco me funciona)
5) Con la solución de Lebans (no vale para Access 2003)
No sé si se os ocurre alguna otra solución. El ideal sería que la rueda se comportara como, por ejemplo, en Word, es decir, que sirviese sólo para subir o bajar por el registro activo. Aunque tampoco me importaría reducir el tamaño del formulario y que la rueda no se usase para nada. Espero vuestras respuestas, pues llevo una semana dándole vueltas al tema.

1 Respuesta

Respuesta
1
No necesitas desactivar la ruda del ratón (scroll).
Si lo que quieres es que en un formulario, viendo un registro específico no te pase a otro cuando te desplazas mediante el scroll sólo haz esto:
1. Tu formulario en vista diseño y te vas a propiedades del formulario (doble click en el selector de formulario donde se cruzan las 2 reglas o en Herramientas / Propiedades)
2. Te vas a la pestaña Otras
3. En la opción "Ciclo" (has de tener por default "Todos los registros" quítalo y elije "Registro activo".
4. Listo!. Prueba ejecutando el formulario y verás que si mueves la rueda del ratón te quedas en el mismo registro. De idual forma si presionas la tecla TAB te quedas en el mismo registro hasta que des clic en un botón de "Registro siguiente".
Hola, gracias por contestar:
He probado tu solución en el formulario de empleados de la base de datos Neptuno, pero no me funciona. Pongo la propiedad "ciclo" en "registro activo", guardo el formulario, pero sigue sin funcionar. Cuando muevo la rueda del ratón, van apareciendo todos los registros, tanto hacia delante como hacia atrás. ¿Se te ocurre alguna otra idea? De todas formas, gracias por la molestia de contestar
Ok ya comprendí.
De hecho la dll de Lebans es la adecuada para las versiones de Access hasta 2003.
Si no te funciona es porque al cargar el código, no registra de forma correcta la dll.
1. En techonthenet.com encontrarás la solución. Es parecido a la propuesta de Lebans pero más efectiva (está en inglés):
http://www.techonthenet.com/access/forms/wheel.php
Si realizas paso por paso y lo agregas en tu formulario al evento que se indica en la página, no tendrás problemas. Probado por mí con aceptables resultados.
2. Otra opción más sencilla es agregar el siguiente evento a tu form:
Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
DoCmd.GotoControl "Nombre de tu último campo"
End Sub
Este pequeño código lo único que hará es que cuando te desplaces con la rueda del ratón te enviará al último campo que tengas en el form ( o el campo o control que tú quieras).
Es sencilla pero puede funcionarte si no quieres hacer lo de techonthenet.com
Lo malo es que no te puedes desplazar de forma normal con la rueda, pues te envía al control que hayas elegido.
3. La mejor solución es que migres tu aplicación a Access 2007 / 2010 pues en vista formulario la rueda del ratón no desplaza por los registros ;)
Me cuentas cómo te va con las propuestas.
Siento la tardanza. He estado probando las soluciones y he tenido bastantes problemas por la cantidad de códigos de Visual que había probado y que habían quedado en el proyecto. Pero lo he vuelto a hacer desde el principio y la primera solución funciona perfectamente. Muchísimas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas