Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Control De Evento Usando Last SOLUCIONADO
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Control De Evento Usando Last SOLUCIONADO 
 
Hola,

Tengo un problema con un código parecido a este (pongo este código por simplificar):



Public Sub tabulador(codigo As Variant)
 Select codigo
  Case Key.Enter, Key.Return
  Desktop.SendKeys("[Tab]")
  Default
 End Select
End


Public Sub texto_GotFocus()
  Last.background = &9FFFFF&
End

Public Sub texto_lostFocus()
  Last.background = &FFFFFF&
  verifica(Last)
  
End

Private function verifica (Ctrl As TextBox) as boolean
    Message("hola")
end

 


La idea es un formulario con diferentes TextBox todos ellos formando el grupo "texto".
Al coger y perder el foco cambian de color de fondo (pura estética).
Al perder el foco una función verifica si el tipo de dato es obligatorio y si es conforme (usando tag) y si hay un error lanza un mensaje al usuario informando de los errores.
El problema reside en que cuando pulso "enter" el TextBox actual pierde el foco y lo coge el siguiente TextBox. Entonces se ejecuta el evento LostFocus y cuando se dispara el mensaje de error el TextBox actual (que aún está vacío) pierde el foco y se evalúa otra vez (es como un rebote). ¿Se entiende?

¿Cómo puedo evitar que se ejecute el evento lostFocus al lanzar el mensaje?

Gracias anticipadas

Saludos
 



 
última edición por ljma el Miercoles, 22 Febrero 2012, 23:01; editado 1 vez 
ljma - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Evento Usando Last 
 
prueba a interceptar el evento Activate del textbox

Public Sub TextBox1_Activate()

     Stop Event

End
 

 



 
angelnu - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Evento Usando Last 
 
Hola angelnu,

No me funciona. Si te he entendido:


Public Sub tabulador(codigo As Variant)
 Select codigo
  Case Key.Enter, Key.Return
  Desktop.SendKeys("[Tab]")
  Default
 End Select
End


Public Sub texto_GotFocus()
  Last.background = &9FFFFF&
End

Public Sub texto_lostFocus()
  Last.background = &FFFFFF&
  verifica(Last)
  
End

Private Function verifica(Ctrl As TextBox) As Boolean
    Message("hola")
End

Public Sub texto_KeyPress()
  tabulador(Key.Code)
End

Public Sub texto_Activate()
  
  Stop Event
  
End
 


Gracias otra vez

Saludos
 



 
última edición por ljma el Lunes, 20 Febrero 2012, 23:12; editado 1 vez 
ljma - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Evento Usando Last 
 
El problema es que quitas el foco antes de terminar el evento LostFocus, llamas a la función verifica que a su vez llama a Message (aquí has perdido el foco del textbox) , luego cierras Message , salta el evento Gotfocus y otra vez salta LostFocus.

Prueba a llamar a la función verifica antes de que el textbox pierda el foco.

Public Sub tabulador(codigo As Variant)

 Select codigo
  Case Key.Enter, Key.Return
  verifica(Last)
  Desktop.SendKeys("[Tab]")
  Default
 End Select
 
End

 

Mira a ver si te sirve así.

Un saludo Angel.
 



 
angelnu - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Control De Evento Usando Last 
 
La función "Verifica()" no retorna ningún valor, en este caso True o False. Ya sé que es solo una prueba, pero hay que tenerlo en cuenta ya que así podrías bifurcar el resultado con un condicional y conseguir el efecto deseado (o no).

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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Control De Evento Usando Last SOLUCIONADO 
 
Gracias a Ambos,

Esa solución funciona perfecto.

Saludos
 



 
ljma - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Lanzar Un Evento Desde Una Clase Definida ... santijav General 3 Sabado, 30 Abril 2011, 05:35 Ver último mensaje
soplo
No hay nuevos mensajes Posible Bug En El Evento KeyPress Del Cuad... lumbanico General 6 Lunes, 11 Febrero 2013, 08:31 Ver último mensaje
sebikul
No hay nuevos mensajes Evento Click En El Control ListBox datobinario General 14 Miercoles, 13 Marzo 2013, 23:12 Ver último mensaje
datobinario
No hay nuevos mensajes ¿Cual Es El Evento Donde Se Crea Y Carga ... gambafeliz Controles/Librerías/Componentes 7 Sabado, 21 Septiembre 2019, 16:00 Ver último mensaje
gambafeliz
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 0 invitados
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron