|
Página 1 de 2
|
Autor |
Mensaje |
frajanic
Usuario
Registrado: Octobre 2013
Mensajes: 44
Edad: 68
|
Gestionar 2 Eventos
Tengo el siguiente código para controlar la entrada de un NIF en formato adecuado y la salida del formulario:
Funciona perfectamente, PERO cuando pulso el BotonSalir salta antes el evento DCdni_Lostfocus y no permite salir del formulario.
S.O.S.
Gracias
última edición por jguardon el Martes, 23 Junio 2015, 15:52; editado 1 vez
Editado por jguardon, Martes, 23 Junio 2015, 15:52: Resaltado de sintaxis mediante botón "C#" en edición
|
#1 Martes, 23 Junio 2015, 13:05 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Gestionar 2 Eventos
última edición por vuott el Martes, 23 Junio 2015, 16:06; editado 2 veces
|
#2 Martes, 23 Junio 2015, 16:00 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Gestionar 2 Eventos
Puedes poner un flag (bandera) que indique que estás queriendo salir de la aplicación para que no se ejecute el evento lostfocus. Por ejemplo:
Espero que sea de ayuda, no lo he probado, pero así debería funcionar.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#3 Martes, 23 Junio 2015, 16:02 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: Gestionar 2 Eventos
Noooooooooo!!! Quit no hace una salida limpia la mayoría de las veces cuando se usan formularios, provocando memory leaks.
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#4 Martes, 23 Junio 2015, 16:03 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Gestionar 2 Eventos
Noooooooooo!!! Quit no hace una salida limpia la mayoría de las veces cuando se usan formularios, provocando memory leaks.
Si... he visto, es asì.
En efecto en console obtendremos este mensaje:
gbx3: warning: 1 allocation(s) non freed.
"Memory leak" ocurre cuando un bloque de memoria reservada no es liberada...
uhmmm.... una cosita de area de memoria con los Pointerzzz
última edición por vuott el Miercoles, 24 Junio 2015, 15:56; editado 3 veces
|
#5 Martes, 23 Junio 2015, 16:08 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Gestionar 2 Eventos
Como esas cosas pasan, lo que yo hago es una función Verificar() que coloco en el botón de grabar antes de grabar y que trate todas esas verificaciones. Al fin y al cabo que el nif sea correcto sólo te interesa en el momento de grabarlo, no de escribirlo.
Saludos.
=================== No podemos regresar
|
#6 Martes, 23 Junio 2015, 16:15 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Gestionar 2 Eventos
gbx3: warning: 1 allocation(s) non freed.
...memoria reservada no es liberada...
uhmmm.... una cosita con los Pointerzzz
memoria reservada ? Punteros ?
No hay problema: vamos, hermanos, a apuntar tambien nosotros !
última edición por vuott el Martes, 23 Junio 2015, 16:44; editado 6 veces
|
#7 Martes, 23 Junio 2015, 16:18 |
|
|
frajanic
Usuario
Registrado: Octobre 2013
Mensajes: 44
Edad: 68
|
Re: Gestionar 2 Eventos
Gracias por vuestras sugerencias, pero el problema continúa.
Nada de lo que coloque en el evento BotonSalir_Click funciona por la sencilla razón de que ese evento no llega a producirse.
Pensando, en buena lógica, es de esperar que el evento _LostFocus se dispare antes que el _Click en otro control.
Es decir, _LostFocus bloquea a _Click, por lo que habría que establecer un control en _LostFocus.
He probado en DCdni_LostFocus:
dim s as string
s=Last.Text
If s="SALIR" then Me.Close
que me da un error "type mystmach: ..........
Hasta ahora, la "solución" de shordi, obviar el problema, es la única, sólo que, con el debido respeto, no me parece elegante.
Después de teclearte el formulario, que te diga: "DNI incorrecto"... Lo primero que se te viene a la boca es: "¿Y por qué no me lo adviertes antes?"
¡Habrá que buscar otro método!
De todas formas, gracias por vuestras respuestas, he aprendido de ellas.
|
#8 Martes, 23 Junio 2015, 17:39 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Gestionar 2 Eventos
Citar: Nada de lo que coloque en el evento BotonSalir_Click funciona por la sencilla razón de que ese evento no llega a producirse.
Si vas a seguir lo que te dije más arriba dese eliminar el evento lostFocus, si no, no arreglamos nada.
Saludos.
=================== No podemos regresar
|
#9 Martes, 23 Junio 2015, 17:47 |
|
|
frajanic
Usuario
Registrado: Octobre 2013
Mensajes: 44
Edad: 68
|
Re: Gestionar 2 Eventos
¡He conseguido algo!
Pero que alguien me lo explique. No sé cómo se me ha ocurrido.
He introducido:
Wait 0.2
Public Sub DCdni_LostFocus()
Dim n As Integer, b As Boolean
Wait 0.2
If Len(DCdni.Value) <> 9 Then
Message("Tiene que teclear un DNI adecuado (8 dígitos y una letra")
Ahora, cuando pinchas BotonSalir, salta el mensaje... ¡PERO DESPUÉS SALE DEL PROGRAMA! Y ocurre lo mismo aunque la demora sea más larga.
También he comprobado que si pinchas en el botón de Cerrar Formulario (x) se ejecuta perfectamente sin detectar _LostFocus.
|
#10 Martes, 23 Junio 2015, 18:19 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
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
|
|
|
|
|