Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

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

Se accedi con utente e password, puoi aggiungere dei commenti.


Accesso

User:
Pass: Accedi

Cerca

Se non trovi le informazioni che cerchi scrivi a aiuto@sviluppo4d.it

4D Principali

4D Discussioni

Faq random


Crediti

Dominio registrato da ZetaNet
Sito realizzato da Nexus srl
4D SQL 11.9.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
301 utenti registrati

Pagina servita il 19/03/24 alle 06:50:33 Valid HTML 4.01! Valid CSS!

Mutuo Facile, iDigitalScout, iDigitalTags e altre app di Nexid srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per IOS Apple iPhone, iPod, iPad