Deshabilitar scrolling con rueda de ratón
A diferencia de versiones anteriores de Ms access, en 2000, al tener abierto un formulario, la rueda del ratón realiza un scrolling de registros. Necesito deshabilitar dicho desplazamiento. ¿Sabéis cómo conseguirlo?
Respuesta de Iker Olasolo
0
0
Microsoft has released update 1709 which resolves the issue of the scrollbars not working introduced by update 1707. So be sure to update your installation.
If you need more information, feel free to read my blog post on the subject: http://www.devhut.net/2017/08/04/access-2016-form-scrolling-doesnt-work/
- Compartir respuesta
- Anónimo
ahora mismo
1 respuesta más de otro experto
Respuesta de oscarlmv
1
1
¿Es sólo el Scrolling lo que quieres evitar? O ¿También el Pag. Down, el Tabulador, etc..., para que no cambie a un registro nuevo después de ya haber insertado uno?
Lo que necesito que me digas para poderte ayudar es:
- Que función tiene el formulario en cuestión.
- Los "botones de navegación", o de desplazamiento de resgitros, los tienes ¿activos, habilitados y pretendes que con ellos si se pueda desplazar de registros?
Una vez que me des la respuesta te indico de una forma u otra (depende tus contestaciones).
Un saludo y espero tu respuesta. Hasta pronto y suerte en tu desarrollo!
Óscar L.M.V.
Lo que necesito que me digas para poderte ayudar es:
- Que función tiene el formulario en cuestión.
- Los "botones de navegación", o de desplazamiento de resgitros, los tienes ¿activos, habilitados y pretendes que con ellos si se pueda desplazar de registros?
Una vez que me des la respuesta te indico de una forma u otra (depende tus contestaciones).
Un saludo y espero tu respuesta. Hasta pronto y suerte en tu desarrollo!
Óscar L.M.V.
Hola Oscar.
Efectivamente solo me queda controlar la rueda del ratón, ya que en versiones anteriores esto no me ocurría. El PgUp/PgDn ya los tengo deshabilitados, así cómo el selector de registros y el tabulador.
Todos los desplazamientos se producen a través de botones de comandos.
Te explico: La tabla a la que está asociada el formulario tiene, entre otros, 2 campos numéricos enteros (no autonuméricos) que son SECUENCIA y SUBSECUENCIA. Es decir, los valores para diferentes registros serían: 1-1,1-2,1-3...2-1,2-2... n-n
Cada ve que nos desplazamos el sistema presenta el registro de la secuencia contigua pero solo el de la subsecuencia 1. Es decir: si desde el principio de la tabla intento avanzar al siguiente, me presenta el 1-1, luego el 2-1, el 3-1 (y se salta en la presentación del formulario el resto de registros de subsecuencia <> 1. AHORA LA RUEDECITA DEL RATÓN EN LA VERSION ACTUAL DE ACCESS me ha trastocado el invento y no he encontrado ninguna opción para deshabilitarlo. GRACIAS por tu colaboración.
Efectivamente solo me queda controlar la rueda del ratón, ya que en versiones anteriores esto no me ocurría. El PgUp/PgDn ya los tengo deshabilitados, así cómo el selector de registros y el tabulador.
Todos los desplazamientos se producen a través de botones de comandos.
Te explico: La tabla a la que está asociada el formulario tiene, entre otros, 2 campos numéricos enteros (no autonuméricos) que son SECUENCIA y SUBSECUENCIA. Es decir, los valores para diferentes registros serían: 1-1,1-2,1-3...2-1,2-2... n-n
Cada ve que nos desplazamos el sistema presenta el registro de la secuencia contigua pero solo el de la subsecuencia 1. Es decir: si desde el principio de la tabla intento avanzar al siguiente, me presenta el 1-1, luego el 2-1, el 3-1 (y se salta en la presentación del formulario el resto de registros de subsecuencia <> 1. AHORA LA RUEDECITA DEL RATÓN EN LA VERSION ACTUAL DE ACCESS me ha trastocado el invento y no he encontrado ninguna opción para deshabilitarlo. GRACIAS por tu colaboración.
Este mensaje es simplemente para indicarme que me pongo manos a la obra con lo tuyo... Es que aquí, en el trabajo, me ha costado hacerme con un ratón con scroll para las pruebas, pero por fin! Ya lo tengo...
De todos modos, una pregunta: El formulario que utilizas ¿es solo para insertar un registro o también para editar los existentes? No entiendo muy bien, si en ese formulario tienes los botones de navegación (los de las flechas de Access para moverte por registros) y permites que se utilicen, porqué te molestan en proteger el resto de botones... Al fin y al cabo hacen lo mismo mediante otras eventos, no ¿?
Bueno.
De todos modos, una pregunta: El formulario que utilizas ¿es solo para insertar un registro o también para editar los existentes? No entiendo muy bien, si en ese formulario tienes los botones de navegación (los de las flechas de Access para moverte por registros) y permites que se utilicen, porqué te molestan en proteger el resto de botones... Al fin y al cabo hacen lo mismo mediante otras eventos, no ¿?
Bueno.
Hola Oscar.
Creo que no me he explicado bien.
Tengo un formulario SIMPLE (no continuo) y están todos los posibles desplazamientos desactivados. He creado mis propios botones al que he unidos eventos; hasta el cerrar el formulario está desactivado y tengo un botón con evento. Que ¿por qué?
El formulario corresponde a la introducción de apuntes para gestionar entradas a una contabilidad que estoy desarrollando. Existe un formulario que a su vez contiene 2 subformularios y tanto los subformularios como el form. Principal van contra la misma tabla (no estoy sonado. Ha costado pero funciona ok) Se trata de presentar en el formulario ppal. solamente el primer apunte de cada asiento y luego en el subformulario de debe el resto de los apuntes de ese mismo asiento que sean de DEBE(si fuese un asiento con apuntes múltiples), y en el subformulario de Haber el resto de apuntes de ese mismo asiento que sean de Haber.
En el formulario principal NO DEBEN VISUALIZARSE TODOS LOS REGISTROS y eso lo tengo controlado con mis eventos en los botones de desplazamiento, inserción o eliminación que he colocado, además antes de aceptar cualquier desplazamiento he de comprobar que el asiento está cuadrado (suma de importes al Debe = suma de importes al haber) de lo contrario cancelo el evento y me quedo donde estoy.
El formulario, por supuesto que permite altas, bajas, ediciones y eliminación; pero todo con botones colocados por mí y controlado por los eventos que hay detrás de ellos.
Todo funciona perfectamente en Acc95 que no permite el desplazamiento de registros con la ruedecita, pero sí que se produce este desplazamiento con Acc97 y Acc2000
Creo que no me he explicado bien.
Tengo un formulario SIMPLE (no continuo) y están todos los posibles desplazamientos desactivados. He creado mis propios botones al que he unidos eventos; hasta el cerrar el formulario está desactivado y tengo un botón con evento. Que ¿por qué?
El formulario corresponde a la introducción de apuntes para gestionar entradas a una contabilidad que estoy desarrollando. Existe un formulario que a su vez contiene 2 subformularios y tanto los subformularios como el form. Principal van contra la misma tabla (no estoy sonado. Ha costado pero funciona ok) Se trata de presentar en el formulario ppal. solamente el primer apunte de cada asiento y luego en el subformulario de debe el resto de los apuntes de ese mismo asiento que sean de DEBE(si fuese un asiento con apuntes múltiples), y en el subformulario de Haber el resto de apuntes de ese mismo asiento que sean de Haber.
En el formulario principal NO DEBEN VISUALIZARSE TODOS LOS REGISTROS y eso lo tengo controlado con mis eventos en los botones de desplazamiento, inserción o eliminación que he colocado, además antes de aceptar cualquier desplazamiento he de comprobar que el asiento está cuadrado (suma de importes al Debe = suma de importes al haber) de lo contrario cancelo el evento y me quedo donde estoy.
El formulario, por supuesto que permite altas, bajas, ediciones y eliminación; pero todo con botones colocados por mí y controlado por los eventos que hay detrás de ellos.
Todo funciona perfectamente en Acc95 que no permite el desplazamiento de registros con la ruedecita, pero sí que se produce este desplazamiento con Acc97 y Acc2000
Perdona Oscar, pero después de todo el rollo anterior mi problema se resume a lo siguiente:
Prueba:
Abre un formulario que vaya contra una tabla o consulta en Acc2000. Lleva el cursor a cualquier campo, MUeve la ruedecita y verás como se desplazan los registros.
Si esta prueba la haces en Acc97, la aplicación actúa igual.
Si esta prueba la haces en Acc95, la ruedecita no afecta al desplazamiento de registros.
Pregunta:
¿Cómo evitar en Acc2000 que la rueda del ratón desplace los registros en un formulario?
Prueba:
Abre un formulario que vaya contra una tabla o consulta en Acc2000. Lleva el cursor a cualquier campo, MUeve la ruedecita y verás como se desplazan los registros.
Si esta prueba la haces en Acc97, la aplicación actúa igual.
Si esta prueba la haces en Acc95, la ruedecita no afecta al desplazamiento de registros.
Pregunta:
¿Cómo evitar en Acc2000 que la rueda del ratón desplace los registros en un formulario?
Eso es lo que suponía que querías, pero no entendía del todo bien tu explicación...
Llegados a este punto, que es donde creía que teníamos que llegar, te adjunto una respuesta que hace poco di a otro usuario que quería deshabilitar cualquier tipo de tecla (Tab, Pag Down, ...)y evento de ratón (Scroll) que desplazara o insertara registros de forma no controlada.
Lo único que deberás hacer, a diferencia de este mensaje, sera el modificar los botones de movimiento de registros según te interese...
Pruébalo y ya veras como funciona a la perfección!
Un saludo y no dudes en consultarme las preguntas que te surjan...
Óscar L.M.V.
----------------------------
Voy a intentar explicarte como hacerlo. Respecto a la tecla TAB, es muy sencillo, solo tienes que modificar la propiedad "Cycle" del formulario poniendo como valor "Regustro Activo", así solo te moverás por el registro que tengas en pantalla. Al pulsar el TAB volverá al primer campo del formulario de ESE MISMO REGISTRO, no del siguiente. Lo puedes hacer en diseño (PROPIEDAD DEL FORMULARIO->OTRAS/CICLO.
Pruébalo, pero esto solo soluciona lo del TAB, no del Pag. Down, que es una tecla propia de Access con su propio funcionamiento.
Para solucionar lo del Pag. Down hay que "jugar" con el código como te explico a continuación. Este código que te detallo te impide que insertes un nuevo registro pulses la tecla que pulses, es decir, nos daría igual el Pag. Down, que el TAB que las teclas de función, independientemente de la propiedad Cycle que te decía en el párrafo anterior. Por ello, debes utilizar este código y omiir lo de la propiedad Cycle, ya que solo te la he indicado a nivel de que lo veas por curiosidad.
Para que el formulario funcione como entrada de datos pero no te deje moverte de registro, debes hacer lo siguiente:
1º En las propiedades de datos del formulario, en diseño, debes poner estas opciones:
- Permitir Edidiciones = No
- Permitir Agregar = Si
- Entrada de Datos = Si
2º En el evento Form_AfterInsert() poner (este es el evento que se produce al pulsar el TAB, Pag. Down, etc, tras insertar el registro introducido):
'El formulario solo tiene como origen de datos el registro recien insertado unicamente
Me.RecordSource = "SELECT * FROM TablaOrigenDelFormulario WHERE CampoClave1 =" & Me.CampoClave1 ... '(aqui debes poner los campos de la tabla y del formulario que identifiquen unicamente el registro recien insertado, ninguno mas)
Me.DataEntry = False
Me.AllowAdditions = False
Me.AllowEdits = True
Con esto, el formulario te permitirá introducir un nuevo y único registro, y tras insertarlo dejara de ser u formulario de introducción de datos para pasar a ser un formulario de solo edición y con el único origen de datos del registro recién insertado.
Pruébalo y si tienes alguna duda o consulta no dudes en preguntarme. Esto tiene que funcionarte perfectamente, ya que lo acabo de probar y es exactamente lo que quieres.
Un saludo, suerte en tu desarrollo y ya sabes que aquí estoy para lo que necesites.
Óscar L.M.v.
Llegados a este punto, que es donde creía que teníamos que llegar, te adjunto una respuesta que hace poco di a otro usuario que quería deshabilitar cualquier tipo de tecla (Tab, Pag Down, ...)y evento de ratón (Scroll) que desplazara o insertara registros de forma no controlada.
Lo único que deberás hacer, a diferencia de este mensaje, sera el modificar los botones de movimiento de registros según te interese...
Pruébalo y ya veras como funciona a la perfección!
Un saludo y no dudes en consultarme las preguntas que te surjan...
Óscar L.M.V.
----------------------------
Voy a intentar explicarte como hacerlo. Respecto a la tecla TAB, es muy sencillo, solo tienes que modificar la propiedad "Cycle" del formulario poniendo como valor "Regustro Activo", así solo te moverás por el registro que tengas en pantalla. Al pulsar el TAB volverá al primer campo del formulario de ESE MISMO REGISTRO, no del siguiente. Lo puedes hacer en diseño (PROPIEDAD DEL FORMULARIO->OTRAS/CICLO.
Pruébalo, pero esto solo soluciona lo del TAB, no del Pag. Down, que es una tecla propia de Access con su propio funcionamiento.
Para solucionar lo del Pag. Down hay que "jugar" con el código como te explico a continuación. Este código que te detallo te impide que insertes un nuevo registro pulses la tecla que pulses, es decir, nos daría igual el Pag. Down, que el TAB que las teclas de función, independientemente de la propiedad Cycle que te decía en el párrafo anterior. Por ello, debes utilizar este código y omiir lo de la propiedad Cycle, ya que solo te la he indicado a nivel de que lo veas por curiosidad.
Para que el formulario funcione como entrada de datos pero no te deje moverte de registro, debes hacer lo siguiente:
1º En las propiedades de datos del formulario, en diseño, debes poner estas opciones:
- Permitir Edidiciones = No
- Permitir Agregar = Si
- Entrada de Datos = Si
2º En el evento Form_AfterInsert() poner (este es el evento que se produce al pulsar el TAB, Pag. Down, etc, tras insertar el registro introducido):
'El formulario solo tiene como origen de datos el registro recien insertado unicamente
Me.RecordSource = "SELECT * FROM TablaOrigenDelFormulario WHERE CampoClave1 =" & Me.CampoClave1 ... '(aqui debes poner los campos de la tabla y del formulario que identifiquen unicamente el registro recien insertado, ninguno mas)
Me.DataEntry = False
Me.AllowAdditions = False
Me.AllowEdits = True
Con esto, el formulario te permitirá introducir un nuevo y único registro, y tras insertarlo dejara de ser u formulario de introducción de datos para pasar a ser un formulario de solo edición y con el único origen de datos del registro recién insertado.
Pruébalo y si tienes alguna duda o consulta no dudes en preguntarme. Esto tiene que funcionarte perfectamente, ya que lo acabo de probar y es exactamente lo que quieres.
Un saludo, suerte en tu desarrollo y ya sabes que aquí estoy para lo que necesites.
Óscar L.M.v.
Gracias Óscar. No es que tu solución falle, pero no puedo realizar la query que propones en mi caso particular.
En mi caso PgUp/PgDn las controlo con el evento "al pulsar tecla" y el valor de la función Keycode 33 o 34.
Necesito controlar la rueda, pero no puedo -para evitar el desplazamiento- dejar el formulario contra un único registro.
Supongo que debe existir algo menos drástico para controlar la rueda del ratón. Si no conoces nada más, te agradezco tu colaboración i seguiré buscando. Gracias.
En mi caso PgUp/PgDn las controlo con el evento "al pulsar tecla" y el valor de la función Keycode 33 o 34.
Necesito controlar la rueda, pero no puedo -para evitar el desplazamiento- dejar el formulario contra un único registro.
Supongo que debe existir algo menos drástico para controlar la rueda del ratón. Si no conoces nada más, te agradezco tu colaboración i seguiré buscando. Gracias.
Logicamente la sentencia qu ete pongo tienes que modificarla en relacion a los nombres de tablas, datos, y demas, que utilice ese formulario.
Con el código que te envié controlas todas las teclas (Pag..., Tab...) y el scroll de golpe sin necesidad de nada más...
Tu mismo, pero la que te indico es una solución mucho más profesional y efectiva que ir evento por evento anulando uno a uno... En cuanto no hayas contemplado uno de los eventos -> Fallo!, y en el código que te indico te evitas eso.
Por ultimo, y si sigues en tu idea de seguir como hasta ahora, solo indicarte que el Access no permite controlar el Scroll de ninguna manera. En todo caso deberás hacer uso de las APIS de Windows para poder anular el uso de esta rueda del ratón...
No te había comentado nada acerca de las APIS porque pienso que es preferoible evityar su uso cuando se puede hacer por código, pero... si quieres seguir buscando, orienta tus pasos por ahí: API DE WINDOWS.
Un saludo y espero que tengas suerte. Si tienes alguna otra duda no dudes en hacérmela llegar e intenatare ayudarte.
Por ultimo, te pido por favor que des por finalizada la pregunta, si así lo crees, con el fin de que me desaparezca de preguntas activas. Muchas gracias y recuerda donde puedes localizarme para lo que necesites.
Hasta pronto!
Óscar L.M.V.
Con el código que te envié controlas todas las teclas (Pag..., Tab...) y el scroll de golpe sin necesidad de nada más...
Tu mismo, pero la que te indico es una solución mucho más profesional y efectiva que ir evento por evento anulando uno a uno... En cuanto no hayas contemplado uno de los eventos -> Fallo!, y en el código que te indico te evitas eso.
Por ultimo, y si sigues en tu idea de seguir como hasta ahora, solo indicarte que el Access no permite controlar el Scroll de ninguna manera. En todo caso deberás hacer uso de las APIS de Windows para poder anular el uso de esta rueda del ratón...
No te había comentado nada acerca de las APIS porque pienso que es preferoible evityar su uso cuando se puede hacer por código, pero... si quieres seguir buscando, orienta tus pasos por ahí: API DE WINDOWS.
Un saludo y espero que tengas suerte. Si tienes alguna otra duda no dudes en hacérmela llegar e intenatare ayudarte.
Por ultimo, te pido por favor que des por finalizada la pregunta, si así lo crees, con el fin de que me desaparezca de preguntas activas. Muchas gracias y recuerda donde puedes localizarme para lo que necesites.
Hasta pronto!
Óscar L.M.V.
- Compartir respuesta
1 comentario
Microsoft has released update 1709 which resolves the issue of the scrollbars not working introduced by update 1707. So be sure to update your installation.If you need more information, feel free to read my blog post on the subject: http://www.devhut.net/2017/08/04/access-2016-form-scrolling-doesnt-work/ - Iker Olasolo
- Anónimo
ahora mismo