Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Problema Con Key.Code = 65362 En TextBox1_KeyPress()
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
Estoy diseñando una combinación de TextBox y ListBox donde el TextBox va a tener todo el control del ListBox y el ListBox va a estar únicamente como visor sin control directo por el usuario, únicamente el control lo tendrá el TextBox.

Esto al comienzo del desarrollo y estoy usando el evento KeyPress() para TextBox

Cuando controlo Key.Code -> hacia abajo todo perfecto.

Cuando controlo Key.Code = 65362 hacia arriba surge el problema; os lo explico, pulso la fecha arriba en el TextBox una vez y todo bien, vuelvo hacer lo mismo y el TextBox pierde el foco y se va al anterior control existente para recibir el foco. Y aunque supongo que KeyPress() lo captura y desde el depurador lo hace en la practica no funciona.

¿Que puedo hacer?
¿Os pasa lo mismo?

Gracias.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
Es posible ver tu codigo que da este problema ?
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
vuott escribió: [Ver mensaje]
Es posible ver tu codigo que da este problema ?


Si por favor, oído cocina y gracias por la ayuda.

Pero creo que es mas un comportamiento del control mas que un problema del código.

Permíteme describirte la visión gráfica. Tienes tres controles en un formulario. por ejemplo aunque no es mi caso, TextBoxUnoMas, TextBox1 y ListBox1

El primer TextBoxUnoMas esta para aderezar el problema, pero TextBox1 y ListBox1 es lo que nos interesa

Cuando pulsas dos veces seguidas la fecha arriba del teclado en TextBox1 el foco se va al componente anterior osea TextBoxUnoMas aunque lo controles vía KeyPress() en TextBox1.

Public Sub TextBox1_KeyPress()
  'cursor para abajo
  If Key.Code = 65364 Then
    ListBox1.Index = ListBox1.Index + 1
  Endif
  'cursor para arriba
  If Key.Code = 65362 Then
    If ListBox1.Index > 0 Then
      ListBox1.Index = ListBox1.Index - 1
    Else  
      ListBox1.Index = 0
    Endif
  Endif
  ' If Key.Code = 65362 And String.Len(TextBox1.Text) > 0 Then
  '   ListBox1.Index = ListBox1.Index - 1
  ' Endif
  'tecla enter
  If Key.Code = 65293 Then
    Message.Info("Buscar en la base de datos")
  Endif
End
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
gambafeliz escribió: [Ver mensaje]
Estoy diseñando una combinación de TextBox y ListBox donde el TextBox va a tener todo el control del ListBox y el ListBox va a estar únicamente como visor sin control directo por el usuario, únicamente el control lo tendrá el TextBox.

Esto al comienzo del desarrollo y estoy usando el evento KeyPress() para TextBox

Cuando controlo Key.Code -> hacia abajo todo perfecto.

Cuando controlo Key.Code = 65362 hacia arriba surge el problema; os lo explico, pulso la fecha arriba en el TextBox una vez y todo bien, vuelvo hacer lo mismo y el TextBox pierde el foco y se va al anterior control existente para recibir el foco. Y aunque supongo que KeyPress() lo captura y desde el depurador lo hace en la practica no funciona.

¿Que puedo hacer?
¿Os pasa lo mismo?

Gracias.


Hola ya lo he solucionado, os lo explico:

He creado una variable global booleana con el estado false. Cuando pulso hacia arriba dentro del TextBox1 a la segunda vez se iba a otro control pero al poner en el if que controla el code=65362 (hacia arriba) en este if pongo la variable booleana a true y creo el evento LostFocus de TextBox1 y ahi controlo mediante if que la variable esta en true, si esta en true llamo al evento setfocus de TextBox1 y pongo la variable a false.

Y listo todo funciona perfectamente bien.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
Sin entrar al fondo de la pregunta, está muy recomendado que no se usen nunca los códigos de las teclas.
En primer lugar por ilegibles. En segundo porque caso de variación en teclados, idiomas, etc. la respuesta del programa puede ser ininteligible.

Usa en su lugar las constantes predefinidas para key. Ya sabes, las teclas especiales con su nombre key.Enter, key.up, etc. Y las teclas normales, como si fuesen una colección key["L"], key["1"], etc.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
shordi escribió:  
Sin entrar al fondo de la pregunta, está muy recomendado que no se usen nunca los códigos de las teclas.
En primer lugar por ilegibles. En segundo porque caso de variación en teclados, idiomas, etc. la respuesta del programa puede ser ininteligible.

Usa en su lugar las constantes predefinidas para key. Ya sabes, las teclas especiales con su nombre key.Enter, key.up, etc. Y las teclas normales, como si fuesen una colección key["L"], key["1"], etc.


Estoy deacuerdo por completo pero es que usé Key.Enter y trás hacer Print me daba dos constantes diferentes y para asegurar el salto desde el avión pues decidí usar el código de Print para llegar a tierra sano y salvo.

Pero chicos no hagan esto sin supervisión de shordi (no de un adulto)  
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
Citar:

Estoy deacuerdo por completo pero es que usé Key.Enter y trás hacer Print me daba dos constantes diferentes y para asegurar el salto desde el avión pues decidí usar el código de Print para llegar a tierra sano y salvo.

Es que los teclados tienen dos teclas enter key.Enter y key.Return, la del teclado numérico. Hay que contemplar siempre las dos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
shordi escribió:  
Citar:

Estoy deacuerdo por completo pero es que usé Key.Enter y trás hacer Print me daba dos constantes diferentes y para asegurar el salto desde el avión pues decidí usar el código de Print para llegar a tierra sano y salvo.

Es que los teclados tienen dos teclas enter key.Enter y key.Return, la del teclado numérico. Hay que contemplar siempre las dos.


Por favor shordi puede aclarme mas esto, me ha encantado tu respuesta, ni lo habia pensado, Gracias.

Dime solo y si puedes y te vienen contestarme:

Key.Enter = Es el enter de teclado numerico
Key.Return = Deduzco que es el del teclado alfa-numerico, ¿Es así?

Desde luego en vuestro foro-familia si que se aprende, vamos hasta me voy hacer grande.
 



 
última edición por gambafeliz el Miercoles, 17 Julio 2019, 21:48; editado 2 veces 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress() 
 
gambafeliz escribió: [Ver mensaje]
shordi escribió: [Ver mensaje]
Citar:

Estoy deacuerdo por completo pero es que usé Key.Enter y trás hacer Print me daba dos constantes diferentes y para asegurar el salto desde el avión pues decidí usar el código de Print para llegar a tierra sano y salvo.

Es que los teclados tienen dos teclas enter key.Enter y key.Return, la del teclado numérico. Hay que contemplar siempre las dos.


Por favor shordi puede aclarme mas esto, me ha encantado tu respuesta, ni lo habia pensado, Gracias.

Dime solo y si puedes y te vienen contestarme:

Key.Enter = Es el enter de teclado numerico
Key.Return = Deduzco que es el del teclado alfa-numerico, ¿Es así?

Desde luego en vuestro foro-familia si que se aprende, vamos hasta me voy hacer grande.


Ok ya lo he comprobado.

Key.Enter es para el enter del teclado numerico.
Key.Return es para la tecla enter para el teclado alfa-numerico.
 



 
gambafeliz - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Controlando El Key.Code estrella_de_galicia Aplicaciones/Fragmentos de Código 2 Viernes, 27 Agosto 2010, 20:43 Ver último mensaje
fabianfv
No hay nuevos mensajes Controles Con Key.Code kotonfree Controles/Librerías/Componentes 6 Domingo, 30 Enero 2011, 13:55 Ver último mensaje
kotonfree
No hay nuevos mensajes Cuestion Sobre Key.Code Shell General 2 Viernes, 12 Septiembre 2014, 01:04 Ver último mensaje
Shell
No hay nuevos mensajes The Nature Of Code Shell General 0 Domingo, 10 Marzo 2019, 01:17 Ver último mensaje
Shell
 

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

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
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
No puede descargar archivos
No puede publicar eventos en el calendario