Enter para pasar de un control a otro

Anuncio
Enter para pasar de un control a otro
Para poder detectar la pulsación de la tecla Enter se puede utilizar el evento Keypress, el
cual detecta la pulsación de cualquier tecla, devolviendonos el código ASCII de la tecla
pulsada. En Visual Basic no hace falta saberse el código ASCII de cada tecla, ya que tiene
definidas constantes para cada tecla como se puede observar en la siguiente tabla.
Por tanto para detectar la tecla Enter utilizaremos la constante vbKeyReturn, la cual
equivale al código ASCII 13. El código para realizar la detección es el siquiente:
Cuando se pulsa la tecla Enter eliminamos el código de la tecla pulsada para que
no se produzca ese molesto pitido del ordenador y a continuación simulamos la
pulsacion de la tecla de tabulación mediante la sentencia SendKeys.
SendKeys es una sentencia más de Visual Basic, al igual que If Then, Select
Case, etc...Esta sentencia permite emular la pulsación de las teclas que
deseemos. En la siguiente tabla se muestran los códigos de las principales teclas
para que podamos emular su pulsación cuando lo necesitemos.
Para que este código funcione en todos los controles TextBox de nuestro
formulario, habrá que repetirlo en cada evento Keypress y esto produce un
aumento de lineas de código y de tiempo por nuestra parte. Para evitarlo podemos
definir una rutina que se encargue de realizar el proceso, a la que le pasaremos el
codigo ASCII de la tecla pulsada en cada momento:
Una ùltima mejora que se puede añadir a este código es que no es necesario
incluirlo en cada evento Keypress de cada control TextBox que utilicemos, ya que
haciendo uso de la propiedad Keypreview del formulario en el que estemos
podremos realizar esta acción con una sola línea para cada formulario
Dando el valor True a esta propiedad conseguimos que el evento Keypress sea
tratado primero por el formulario y a continuación por el control que la invocó, si
es que hubo alguno, ya que el propio formulario tambien puede generar dicho
evento.
De esta forma colocando una única linea de codigo en el evento Keypress del
formulario conseguiremos que se llame a la subrutina EnterTab cada vez que se
pulse Enter desde cualquier control.
Arriba
Aceptar solo numeros
El parámetro KeyAscii del evento KeyPress nos indica el código ASCII de la tecla
que se acaba de pulsar.Sólo tendremos que realizar las correspondientes
comparaciones y asignar el valor 0 a dicho parámetro cuando la tecla pulsada no
sea, en este caso, numérica.
Los códigos 44 y 46 corresponden al punto y la coma, en este caso la coma es
sustituida por el punto decimal, válido para el sistema decimal en España. Si no
queremos que el número tenga decimales nos sobrarán las 2 primeras lineas.
También se puede depurar el código para que no se acepte otro punto si éste ya
ha sido pulsado.
Se comprueba que la tecla pulsada este entre el cero(48) y el nueve (57) y se
permite que se pulsen teclas de control: flechas, borrar, etc...
Tal como ocurría en el ejemplo anterior se puede crear un subrutina que se
encargue de realizar el proceso y desde cada control que queramos que acepte
solo números pasarle el codigo ASCII de la tecla pulsada, aunque eso lo dejo para
la práctica del lector.
Arriba
Seleccionar el contenido de un TextBox al recibir el foco
Si queremos que el texto de un TextBox quede automáticamente seleccionado al
recibir el foco, debemos realizar la selección del texto en el evento GotFocus del
control.
Utilizando las propiedades SelStart y SelLength indicaremos el inicio de la
selección y la longitud en caracteres respectivamente. Para seleccionar todo el
texto, la posición de inicio será 0 y la longitud será la misma del control la nos la
dará la función Len()
También podemos contruir una subrutina que realice dicha acción, al cual
tendremos que pasarle como parámetro el control cuyo texto queramos
seleccionar. Ahora por cada GotFocus de cada Textbox únicamente colocaremos
una linea que llame a dicha subrutina. Lamentablemente no se puede conseguir
que una sola linea en todo el formulario haga todo el trabajo como ocurria en el
ejemplo anterior.
Documentos relacionados
Descargar