Escribir con antelación es fácil

Traducido automáticamente de Deepl

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»:

blank

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).

blank

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.

Roland Lannuzel
- Propietario de Producto y Experto en 4D - Después de estudiar electrónica, Roland se dedicó a la informática industrial como desarrollador y consultor, construyendo soluciones para clientes con una variedad de bases de datos y tecnologías. A finales de los años 80 se enamoró de 4D y lo ha utilizado para escribir aplicaciones de negocio que incluyen sistemas de contabilidad, facturación y correo electrónico.Eventualmente se unió a la compañía en 1997, las valiosas contribuciones de Roland incluyen el diseño de especificaciones, herramientas de prueba, demos, así como la formación y hablar con la comunidad 4D en muchas conferencias. Continúa dando forma activamente al futuro de 4D definiendo nuevas características y herramientas de desarrollo de bases de datos.