Connessione al database con Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Il controllo Masked Edit

Il controllo Masked Edit è un'estensione del più comune controllo TextBox. Utilizzando il primo è dunque possibile evitare di allungare notevolmente il codice per istruire una casella di testo standard ad esempio ad inserire determinati tipi di dati.
Il tutto comincia dall'importazione del controllo sulla form.
Sarà quindi necessario cliccare col tasto sinistro del mouse sulla finestra dei controlli, scegliere la voce 'Componenti...' dal popup-menu che apparirà e contrassegnare col segno di spunta la casella corrispondente alla voce 'Microsoft Masked Edit Control x.0' come riportato nella figura qui sotto:


Si dovrà quindi trascinare sulla form l'immagine inserita in un pulsante che apparirà nella finestra dei controlli, all'estrema sinistra della finestra di lavoro di Visual Basic ed eventualmente disporla nelle dimensioni in altezza e lunghezza preferite.
L'icona che corrisponde al controllo Masked Edit sulla finestra dei controlli è la seguente:


La peculiarità di MaskedEdit consiste nel concetto di maschera, ossia una sorta di filtro impostabile al momento dello sviluppo del progetto o durante la sua esecuzione. Nel caso non venga utilizzata la maschera, il controllo si comporterà come una semplice casella di testo.
Attraverso la proprietà Mask è dunque possibile impostare la maschera di input del controllo ossia si può fare in modo che, per esempio, il controllo distingua tra caratteri numerici e alfabetici.
Non è naturalmente possibile una verifica del contenuto, ossia di quello che si immette nella casella di testo.
Nel caso però in cui Se si tenta di immettere un carattere che non è stato definito nella maschera di input, il controllo genererà un evento ValidationError, cosa che risulterà più chiara in seguito.
Quali sono le limitazioni sul testo che si possono applicare? Eccone una tabella esaustiva:

Stringa nulla La limitazione al momento dell'iserimento del testo nel controllo è disattivata. MaskedEdit si comporterà come una vera e propria TextBox;
##-???-## Formato data medio, ad esempio 12-Giu-75
##-##-## Formato data breve, ad esempio 06-12-75 (mese-giorno-anno);
##:## ?? Formato ora medio, ad esempio 11:23 AM
##:## Formato ora breve, ad esempio 11:23
# Segnaposto per cifre. Il carattere inserito deve necessariamente essere un numero
. Separatore decimale che imposta la suddivisione del numero in cifre intere e decimali
, Separatore di migliaia che il formato del numero, ad esempio 1,232
, Separatore di ore (vedere l'esempio con le ore poco più su)
/ Separatore di date
\ Fa in modo che il carattere successivo venga considerato come letterale. Ciò consente di includere nella maschera i caratteri riservati come '#', '&', 'A' e '?' senza che vengano interpretati dal controllo
& Segnaposto di carattere
> Converte tutti i caratteri successivi in maiuscole
< Converte tutti i caratteri successivi in minuscole
A Segnaposto di carattere alfanumerico con immissione obbligatoria
a Segnaposto di carattere alfanumerico con immissione facoltativa
9 Segnaposto per cifre
C Segnaposto per carattere o cifra con immissione facoltativa
? Segnaposto per lettere
Altro... Tutti gli altri caratteri vengono immessi così come sono (vedere esempio più avanti)

Che cosa significa tutto ciò? Che se ad esempio vogliamo che l'utente immetta un testo del tipo 'carattere-numero-carattere', dobbiamo impostare la proprietà Mask del controllo nel seguente modo:

MaskEdBox1.Mask = "9?9"

L'utente visualizzerà una linea (o meglio, tre linee singole unite in modo da formarne una più lunga) che rappresenta la lunghezza del testo che deve essere necessariamente immesso.
Un esempio è rappresentato dalla figura qui sotto:


Nel caso in cui l'utente immetta un carattere non contemplato al momento dello sviluppo del codice non verrà visualizzato niente: il controllo rimarrà bloccato.
E'poi possibile impostare il carattere che può sostituire dette linee. Ad esempio, nel caso in cui si voglia sviluppare un'interfaccia per la richiesta di una password all'utente, sarà sufficiente settare la proprietà PromptChar in modo che si visualizzino gli asterischi come nel codice qui indicato:

With MaskEdBox1
.Mask = "9?9"
.PromptChar = "*"
End With

Immettere una stringa nulla ("") comporterà un'errore nell'utilizzo della proprietà PromptChar.
E' però possibile eliminare del tutto i caratteri indicando una stringa formata da uno spazio vuoto (" ") ad esempio:

With MaskEdBox1
.Mask = "9?9"
.PromptChar = " "
End With

darà al controllo l'aspetto di una classica TextBox.
E'altresì possibile accettare o meno che l'utente immetta gli stessi caratteri che compongono questo prompt, ad esempio che l'utente immetta il carattere '*' se il prompt è '******'. Si utilizza a questo scopo la proprietà AllowPrompt. Nel seguente codice si impedisce all'utente l'utilizzo del carattere '_':

With MaskEdBox1
.Mask = "9?9"
.PromptChar = "_"
.AllowPrompt = False
End With

Altra proprietà è AutoTab che determina un determinato controllo dovrà ricevere lo stato attivo non appena l'utente inserirà una serie di caratteri validi.
Se si imposta la proprietà AutoTab su True e si include nel progetto una semplice casella TextBox, non appena l'utente immetterà l'ultimo carattere, il controllo passa alla TextBox, accogliendo gli eventuali successivi caratteri digitati.
La proprietà ClipMode permette di determinare invece se includere i caratteri letterali della maschera quando si eseguono operazioni di taglia & incolla.
Le impostazioni possibili sono mskIncludeLiterals che include tutti i caratteri letterali della maschera che non siano ancora stati sostituiti dal testo immesso successivamente e mskExcludeLiterals che li esclude tutti. Un'altra proprietà è ClipText che visualizza tutto il testo presente nel controllo MaskedEdit ad esclusione dei caratteri della maschera.
Tutte le altre proprietà sono tipiche del controllo TextBox e dunque non verranno trattate in questo articolo.
Unico evento rilevante è il già citato ValidationError che entra in gioco nel momento in cui l'utente tenta di immettere un carattere di formato non valido.
Se in questo caso vogliamo visualizzare un messaggio di errore generico:

Private Sub Form_Load()
With MaskEdBox1
.Mask = "9?9"
.PromptChar = "_"
.AllowPrompt = False
End With
End Sub
Private Sub MaskEdBox1_ValidationError(InvalidText As String, _
StartPosition As Integer)
MsgBox "Carattere non valido"
End Sub



Archivio:ndexed
Lezioni Commenta questa lezione Invia la tua guida Avviso per le nuove lezioni
Proponi un argomento

Visual Basic Italia© copyright 2000 - tutti i diritti riservati
E-mail:
vbitalia@libero.it