|
Página 1 de 1
|
SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La...
Autor |
Mensaje |
Alaplancha
Pablo
Aprendiz
Registrado: Agosto 2012
Mensajes: 58
Edad: 58 Ubicación: Madrid
|
SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
Hola amigos,
tengo un SliderBox y hago su propiedad Enabled = False. Un SliderBox es un componente formado por un Slider y un SpinBox. Cuando establecemos su propiedad a False, el SpinBox sigue recibiendo aún así el evento de la rueda del ratón, con lo que se incrementa o decrementa el valor de dicho SpinBox y hace que deslice a izquierda o derecha el Slider... ¿Sabéis por qué y cómo puede hacerse para que esto no ocurra?
Gracias y un saludo
|
#1 Miercoles, 19 Abril 2017, 20:30 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
Hola Alaplancha, que de tiempo !!!
Pues respondiendo a tu pregunta, he hecho una prueba en gambas3.9.2, y no se me da ese error el spinbox
¿que version de gambas3, estas usando? ¿puedes subir un pequeño ejemplo donde te esta dando ese problema?
|
#2 Miercoles, 19 Abril 2017, 20:54 |
|
|
Alaplancha
Pablo
Aprendiz
Registrado: Agosto 2012
Mensajes: 58
Edad: 58 Ubicación: Madrid
|
Re: SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
¡Hola jsbsan!
Sí, hace tiempo que no escribía por aquí...
Tengo la versión de gambas 3.9.2, con Manjaro 3.18.48.4. El ejemplo es de lo más sencillo: un proyecto vacío que tiene un formulario con un único SliderBox que no hace nada (es sólo para ver este comportamiento). Lo he probado con los componentes gb.qt4, gb.qt5 y gb.gui, y en los tres casos pasa igual. Teniendo la propiedad Enabled = False:
- si giro la rueda estando el cursor sobre el Slider el evento no produce ningún efecto.
- si intento mover el deslizador del Slider tampoco hace nada.
- si giro la rueda estando el cursor sobre el SpinBox el evento hace que varíe tanto el SpinBox como el Slider.
La única pista que he encontrado, pero que no entiendo muy bien, es que en la documentación de la propiedad Enabled, es decir, Control.Enabled (gb.qt4), dice: "Todos los eventos lanzados por la clase Control son eventos nativos. Tenga en cuenta que los eventos son lanzados aun si la propiedad enabled es FALSE." No lo entiendo muy bien y no sé si la causa puede estar ahí.
¡Un abrazo y gracias!
|
#3 Miercoles, 19 Abril 2017, 21:45 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
Citar: ¿Sabéis por qué y cómo puede hacerse para que esto no ocurra?
No sé cómo hacer que no ocurra... pero ¿qué te impide parar el evento si es enabled=false?
Más o menos...
=================== No podemos regresar
|
#4 Jueves, 20 Abril 2017, 07:52 |
|
|
Alaplancha
Pablo
Aprendiz
Registrado: Agosto 2012
Mensajes: 58
Edad: 58 Ubicación: Madrid
|
Re: SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
¡Hola shordi!
He probado con tu códígo:
Con eso consigo, por ejemplo, que no se imprima Hola. Pero también se consigue si suprimo la línea de StopEvent, ya que es el Return es el que impide que siga ejecutándose el código del método...
Esa solución puede valer en algunos casos, pero no en el caso general. Supongamos que en un principio el SliderBox esta activo y el usuario cambia su valor consciente y voluntariamente y lo fija en, pongamos, 5. Más tarde, por código, desactivamos el SliderBox. El usuario lo ve ahora de un color gris clarito y se confía: ese control está desactivado, yupi. Un poco más tarde, y aún con el control "desactivado" por código, el usuario sin quererlo y sin darse cuenta pasa el cursor por encima del SliderBox y gira la rueda. El valor del SliderBox cambia sin el usuario se entere, pongamos que ahora vale 2. No se ejecuta ningún código porque lo hemos parado con ese Return, pero cuando más tarde activemos de nuevo por código el SliderBox, el usuario encontrará que no marca el valor que él había puesto, 5, sino un valor distinto, 2, que sin sin quererlo y sin darse cuenta él cambió moviendo la ruedecita dichosa... y puede que en ese momento exclame: ¡Por todas las Aristeus antennatus del Mediterráneo!
Gracias y un abrazo
última edición por Alaplancha el Jueves, 20 Abril 2017, 09:54; editado 1 vez
|
#5 Jueves, 20 Abril 2017, 09:49 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
Ok. El control está mal diseñado, pues.
No problem, diseñamos un sliderBox propio redefiniendo el método mousewheel y todo arreglado.
Crea en tu proyecto una clase nueva que se llame, por ejemplo, miSlider y métele éste código:
Cierra tu proyecto y ábrelo otra vez para que el IDE relea los parámetros y ya está. Tendrás un control más disponible en el IDE que se comporta, ahora sí, correctamente.
=================== No podemos regresar
|
#6 Jueves, 20 Abril 2017, 12:02 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
Como siempre, si no te gusta eso de que aparezca en el ide como un recuadro blanco con el nombre dentro, pues le diseñas un icono y lo colocas dentro de la carpeta .hidden/control de tu proyecto. Debe ser un .png y se debe llamar como la clase (en este ejemplo mislider) pero todo en minúsculas. (Te adjunto uno, imporvisado en un momentito, que es igual que el sliderbox pero con la barra de progreso en rojo.)
Con eso el aspecto de tu IDE será éste:
El iconito de marras
Descripción: |
|
Tamaño: |
831 Bytes |
Visto: |
29 veces |
|
Descripción: |
|
Tamaño: |
831 Bytes |
Visto: |
29 veces |
|
Descripción: |
|
Tamaño: |
831 Bytes |
Visto: |
29 veces |
|
=================== No podemos regresar
|
#7 Jueves, 20 Abril 2017, 12:15 |
|
|
Alaplancha
Pablo
Aprendiz
Registrado: Agosto 2012
Mensajes: 58
Edad: 58 Ubicación: Madrid
|
Re: SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
Vaya shordi esta es la diferencia entre tener un icono personal de un linuxjedi con espada láser verde y tener una simple plancha de las antiguas. ¡¡¡Muchas gracias!!! Funciona perfectamente
Un abrazo
|
#8 Jueves, 20 Abril 2017, 14:16 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: SliderBox.Enabled = False, Pero Su SpinBox Sigue Recibiendo El Evento De La Rueda Del Ratón
A mandar!
=================== No podemos regresar
|
#9 Jueves, 20 Abril 2017, 16:14 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|