Controllo textfield

Ciao a tutti,
da poco uso xojo vengo comunque dalla programmazione ad oggetti con delphi e java, vorrei utilizzare una sola classe per il controllo dei campi textfield. Mi spiego meglio ho varie forme con campi numerici interi o decimali, date, email come posso fare per non fare un controllo su ogni singolo campo? Ho gi provato creando una sottoclasse di Textfield ma riesco a gestire solo il KeyDown e quindi evito che non vengono scritti valori non numerici in campi in cui mi aspetto solo numeri.
Grazie
in anticipo
Umberto Romano

Il metodo con il keydown efficace e semplice da implementare direttamente.
Puoi anche fare in modo che il campo rispetti una certa “struttura” ovvero un regolar expression
Ad esempio per gli interi (\d)* o (\d)((\.|,)(\d))? per un campo con decimali (qui forse sarebbe opportuno modificare la regex in base al separatore di decimali considerando il punto e quello corrente, anche se con la virgola dovremmo coprire tutto)

Per cui (in pseudocodice) il tuo evento base keydown potrebbe essere:
keyDown(key) or if(isControlKey, false, valutaRegEx)
dove
keyDown la propagazione dell’evento (diamo priorit all’istanza)
isControlKey serve per filtrare i caratteri di controllo (cancella, freccia sinistra o destra, tab etc)
valutaRegEx valuta il testo corrente concatenato al carattere inserito rispetto alla regular expression

Per
Questo semplice con i campi numerici dove puoi valutare il singolo carattere
Per i campi tipo mail, ad esempio, pi complesso in quanto la stringa provvisoria potrebbe essere non valida ma alla fine sar valida (finch non ho finito di scrivere non posso dirlo)

A questo punto meglio valutare post la “salute” di quanto inserito (tra l’altro ti permette di verificare che il campo sia valido anche in funzione di altri)
Le strategie per questo possono essere diverse, funzione globale di validazione, funzione locale al campo (sottoclasse)

Come gi ti avevo accennato privatamente, ti permette di lasciar libero l’utente di inserire i dati come vuole tanto la verifica la fai alla fine.