Titolo: Metodo di controllo dell'Input da tastiera
Categoria: Codice |
|
Ultimo Aggiornamento: 27/07/05 |
Usando l'evento On Before Keystroke si riesce ad intercettare cosa viene scritto nella corrente area di testo (dove si trova il cursore), prima che sia accettato come nuovo valore del campo o della variabile corrispondente.
Il metodo
Handle keystroke utilizza una seconda variabile utilizzabile per gestire quello che si sta inserendo.
I parametri sono il puntatore all'area e il puntatore ad una variabile secondaria.
Il metodo ritorna il nuovo valore dell'area nella variabile e ritorna Vero se il testo è cambiato.
` Handle keystroke
` Handle keystroke ( Pointer ; Pointer ) -> Boolean
` Handle keystroke ( -> areaIns ; -> valoreCorrente ) -> E' un valore nuovo
C_POINTER ($1;$2)
C_TEXT ($nuovoValore_t)
GET HIGHLIGHT ($1->;$inizio_l;$fine_l) ` Prendi l'intervallo selezionato nell'area
$nuovoValore_t:=$2->` Inizia a lavorare con il valore corrente
Case of ` Controlla il tasto premuto
` E' stato premuto il tasto Backspace (Delete)
: (Ascii (Keystroke)=Backspace )
` Cancella i caratteri selezionati o il carattere a sinistra
$nuovoValore_t:=Substring ($nuovoValore_t;1;$inizio_l-1-Num($inizio_l=$fine_l))+Substring($nuovoValore_t;$fine_l)
` E' stato premuto un carattere accettato
: (Position (Keystroke;"abcdefghjiklmnopqrstuvwxyz -0123456789")>0)
If ($inizio_l#$fine_l)
` Se c'è una seleziona il carattere la sostituisce tutta
$nuovoValore_t:=Substring($nuovoValore_t;1;$inizio_l-1)+Keystroke+Substring($nuovoValore_t;$fine_l)
Else ` Non c'è selezione, solo il cursore...
Case of ` .. all'inizio
: ($inizio_l<=1)
$nuovoValore_t:=Keystroke+$nuovoValore_t
` ... alla fine
: ($inizio_l>=Length($nuovoValore_t))
$nuovoValore_t:=$nuovoValore_t+Keystroke
Else ` ... in mezzo al testo
$nuovoValore_t:=Substring($nuovoValore_t;1;$inizio_l-1)+Keystroke+Substring($nuovoValore_t;$inizio_l)
End case End if ` E' stata premuta una Freccia, accetta comunque il tasto
: (Ascii(Keystroke)=Left Arrow Key )
: (Ascii(Keystroke)=Right Arrow Key )
: (Ascii(Keystroke)=Up Arrow Key )
: (Ascii(Keystroke)=Down Arrow Key )
`
Else ` E' un carattere non accettato, lo filtra del tutto
FILTER KEYSTROKE ("")
End case ` Il valore è cambiato?
$0:=($nuovoValore_t#$2->)
` Ritorna comunque il valore
$2->:=$nuovoValore_t
Clic qui per un esempio di utilizzo del metodo, per
mascherare l'inserimento delle password
Inviato da: Umberto Migliore |
|
Visite: 14632 |
Se accedi con utente e password, puoi aggiungere dei commenti.