|
Página 1 de 1
|
Problema Con Key.Code = 65362 En TextBox1_KeyPress()
Autor |
Mensaje |
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
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.
|
#1 Miercoles, 17 Julio 2019, 06:26 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress()
Es posible ver tu codigo que da este problema ?
|
#2 Miercoles, 17 Julio 2019, 10:42 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: Problema Con Key.Code = 65362 En TextBox1_KeyPress()
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
|
#3 Miercoles, 17 Julio 2019, 10:52 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
Re: 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.
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.
|
#4 Miercoles, 17 Julio 2019, 11:40 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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
|
#5 Miercoles, 17 Julio 2019, 12:19 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
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.
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)
|
#6 Miercoles, 17 Julio 2019, 12:32 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
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
|
#7 Miercoles, 17 Julio 2019, 16:14 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
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.
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, 20:48; editado 2 veces
|
#8 Miercoles, 17 Julio 2019, 20:47 |
|
|
gambafeliz
Analista Programador
Registrado: Julio 2019
Mensajes: 830
Edad: 54
|
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.
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.
|
#9 Miercoles, 17 Julio 2019, 22:46 |
|
|
|
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
|
|
|
|
|