gartumar2   03-11-2022, 02:31
#1
Sabe alguien por qué el evento change de un DateBox se ejecuta dos veces en cada cambio de fecha. ¿?
Shordi   03-11-2022, 08:59
#2
Bienvenido. No uso ese control, pero si pasas tu código podemos mirarlo, si no... pueden ser mil cosas.

Saludos

No podemos regresar
tincho   03-11-2022, 11:49
#3
(03-11-2022, 02:31)gartumar2 escribió: Sabe alguien por qué el evento change de un DateBox se ejecuta dos veces en cada cambio de fecha. ¿?

No lo se pero lo curioso es que el doble evento solo se produce si cambias la fecha con el boton de calendario y no si lo cambias a mano, donde cada vez que cambias un numero salta el evento.
Así que creo que algo sucede con el manejo del llamado "proxy" de eventos que no se como funciona pero me parece que va por ahí el tema.
Creo que como usuario no puedes hacer nada al respecto, solo reportarlo en bug tracker de gambas o enviar un email a la lista internacional, y seguramente lo solucionen en unos dias en la version de desarrollo, pero no en la que tienes instalada si es de repositorios.

1 Saludo.
gartumar2   03-11-2022, 23:19
#4
Efectivamente:

Si cambias la fecha de forma manual se dispara el evento cada pulsación en día o en mes y al terminar de poner el año. Esto parece lógico ya que la fecha ha tenido todos esos "Change". Cuando cambias la fecha desde el calendario o desde código, el evento se dispara siempre dos veces. Esto no es razonable, ya que solo ha habido un cambio en la fecha. He realizado un programa de prueba con un DateBox y un Button y he hecho las comprobaciones.

Solución:

He puesto una variable testigo, de tal forma que cuando el evento se dispara, si la fecha es la misma que la anterior, se sale del procedimiento sin hacer nada.

Public Sub dtxFecha_Change()
    If $dTestigoFecha = dtxFecha.Value Then Return
    $dTestigoFecha = dtxFecha.Value
    ..
    ..
tercoide   04-11-2022, 13:59
#5
ya hubo ese problema con otros controles y es un bug de Gambas, o de QT5 o de GTK3

"Es mejor saber todo de muy poco que muy poco de todo" - anonimo
tincho   04-11-2022, 22:31
#6
(03-11-2022, 23:19)gartumar2 escribió: He puesto una variable testigo, de tal forma que cuando el evento se dispara, si la fecha es la misma que la anterior, se sale del procedimiento sin hacer nada.

También se puede hacer, por ejemplo, de esta otra manera:
Código:
Public Sub GridViewFilter_KeyPress()
  If Key.Text <> Upper(Key.Text) Then
    Stop Event
  Endif
End

1 Saludo.
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.