Si está interesado en la interfaz de usuario, es posible que ya haya utilizado los eventos On before keystroke y On after keystroke. Seguramente le alegrará saber que el manejo de estos eventos se ha mejorado mucho con 4D v18 R5. Además, se ha creado un nuevo comando para determinar si hay una entrada en curso cuando se genera el evento On before keystroke. ¡Descubramos más!
HDI: escribir por adelantado es fácil
entradas de texto
Cuando se introduce un texto, el sistema puede intervenir para ayudarle, independientemente del idioma o del sistema operativo. Por ejemplo, tomemos el caso de los caracteres acentuados en francés o español: «ê» «ü» «ñ». Para introducir estos caracteres en macOS, lo más sencillo es mantener pulsada la tecla correspondiente, lo que hace que aparezca un cuadro de diálogo:
Para seleccionar la letra deseada, hay que utilizar las teclas de dirección y luego validar la elección con la tecla «return» o «enter»:
A partir de 4D v18 R5, los eventos On before keystroke y On after keystroke sólo se generan una vez que se valida este tipo de diálogo del sistema (también conocido como IME). No es necesario recibir los códigos correspondientes a las teclas de dirección y a la tecla de validación cuando sólo es importante la letra final.
Cuadros de lista
Los cuadros de lista también han recibido una mejora. El evento On before keystroke se genera en cuanto el cuadro de lista tiene el foco cuando se escribe una tecla, incluso si no se está introduciendo ninguna celda. Esto nos permite saber qué teclas se han pulsado y posibilita la toma de decisiones mediante programación, como iniciar una nueva búsqueda o cambiar la selección actual.
MoRE INFO con un nuevo comando
¿Cómo saber si un evento se generó durante una entrada real o simplemente porque el cuadro de lista tenía el foco en el momento en que se pulsó una tecla en el teclado? La respuesta es muy sencilla: el nuevo comando Is editing text . Devuelve True si el usuario está introduciendo valores en un objeto de formulario de entrada, y False en todos los demás casos.
Ejemplo de código
Este sencillo ejemplo muestra cómo realizar una consulta tan pronto como se escribe cualquier letra entre la A y la Z en el teclado(todos los demás caracteres se ignoran en este ejemplo).
Por supuesto, la consulta no puede realizarse mientras se modifica una celda. Por eso utilizamos el nuevo comando Is editing text antes de realizar cualquier nueva consulta.
var $char : Text
Case of
:( FORM Event .code=On Before Keystroke)
If (Not(Is editing text)) // check not in input mode
$char :=Keystroke
Form.people:= ds .people.query("nombre = :1 o apellido = :1";$char+"@")
End if
End case
¿Otro ejemplo?
El siguiente GIF animado muestra lo que se puede hacer utilizando este evento en un cuadro de lista, sin la ayuda de ningún otro botón o área de entrada(las letras que aparecen en el GIF animado sólo se muestran para mostrar qué teclas se han escrito en el teclado).
Encuentre más detalles sobre el comando en el centro de documentación.
Conclusión
Esta función ayuda a crear una interfaz más fácil de usar y estamos seguros de que, como desarrollador, la utilizarás para mejorar aún más tu experiencia de usuario.
Para más información, no dudes en consultar la documentación.