Digitare in anticipo è facile

Tradotto automaticamente da Deepl

Se siete interessati all’interfaccia utente, forse avete già utilizzato gli eventi On before keystroke e On after keystroke. Sarete certamente felici di sapere che la gestione di questi eventi è stata notevolmente migliorata con 4D v18 R5. Inoltre, è stato creato un nuovo comando per determinare se c’è un input in corso quando viene generato l’evento On before keystroke. Scopriamone di più!

HDI: la digitazione facilitata

input di testo

Quando si immette del testo, il sistema può intervenire per aiutare l’utente, indipendentemente dalla lingua o dal sistema operativo. Ad esempio, prendiamo il caso dei caratteri accentati in francese o in spagnolo: “ê” “ü” “ñ”. Per inserire questi caratteri in macOS, il modo più semplice è tenere premuto il tasto corrispondente che fa apparire una finestra di dialogo:

Per selezionare la lettera desiderata, è necessario utilizzare i tasti freccia e poi convalidare la scelta con il tasto “return” o “enter”:

blank

A partire da 4D v18 R5, gli eventi On before keystroke e On after keystroke vengono generati solo dopo la convalida di questo tipo di dialogo di sistema (alias IME). Non è necessario ricevere i codici corrispondenti ai tasti freccia e al tasto di convalida quando è importante solo la lettera finale!

caselle di riepilogo

Anche le caselle di riepilogo sono state migliorate. L’evento On before keystroke viene generato non appena la casella di riepilogo ha il focus quando viene digitato un tasto, anche se non viene inserita alcuna cella. Questo ci permette di sapere quali tasti sono stati premuti e di prendere decisioni programmatiche come l’avvio di una nuova ricerca o la modifica della selezione corrente!

MoRE INFO con un nuovo comando

Come si fa a sapere se un evento è stato generato durante un effettivo inserimento o semplicemente perché la casella di riepilogo aveva il focus nel momento in cui è stato premuto un tasto sulla tastiera? La risposta è molto semplice: il nuovo comando Is editing text . Esso restituisce True se l’utente sta inserendo valori in un oggetto modulo di input e False in tutti gli altri casi.

Esempio di codice

Questo semplice esempio mostra come eseguire una query non appena viene digitata sulla tastiera una qualsiasi lettera compresa tra A e Z(tutti gli altri caratteri vengono ignorati in questo esempio).

Naturalmente, la query non può essere eseguita mentre una cella viene modificata. Per questo motivo si utilizza il nuovo comando Is editing text prima di eseguire qualsiasi nuova query.

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("nome = :1 o cognome = :1";$char+"@")
End if
End case

Un altro esempio?

La GIF animata che segue mostra cosa si può fare utilizzando questo evento in una casella di riepilogo, senza l’aiuto di altri pulsanti o aree di input(le lettere che appaiono nella GIF animata sono visualizzate solo per mostrare quali tasti sono stati digitati sulla tastiera).

blank

Trovate maggiori dettagli sul comando nel doc center!

Conclusione

Questa funzione contribuisce a creare un’interfaccia più facile da usare e siamo certi che, come sviluppatori, la userete per migliorare ulteriormente la vostra esperienza utente!

Per ulteriori informazioni, non esitate a consultare la documentazione!

Roland Lannuzel
- Product Owner ed esperto di 4D - Dopo aver studiato elettronica, Roland è passato all'IT industriale come sviluppatore e consulente, realizzando soluzioni per i clienti con una varietà di database e tecnologie. Alla fine degli anni '80 si è innamorato di 4D e lo ha utilizzato per scrivere applicazioni aziendali che includono sistemi di contabilità, fatturazione e posta elettronica. Entrato a far parte dell'azienda nel 1997, Roland ha dato il suo prezioso contributo progettando specifiche, strumenti di test e demo, oltre a formare e parlare alla comunità 4D in occasione di numerose conferenze. Continua a plasmare attivamente il futuro di 4D definendo nuove funzionalità e strumenti di sviluppo di database.