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”:
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).
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!