Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Limitare una ComboBox senza l'utilizzo dell'API Difficoltà: 1 / 5 Stranamente i controlli ComboBox non possiedono una proprietà MaxLength che consenta di limitare il numero di carattere ammessi nella casella, analogamente alle TextBox. Talvolta però si rende necessario impedire all'utente l'immissione di un numero di caratteri superiore. Limitare il numero di caratteri immessi in una ComboBox è un'operazione molto semplice e questa prima parte dell'articolo utilizzerà un banalissimo controllo dei tasti digitati, in modo da rifiutare i caratteri in eccesso prima che vengano inviati al controllo e visualizzati. Il codice è orientato intorno all'eventoKeyPress della singola ComboBox:
La costante lngMaxCaratteri stabilisce il numero di caratteri ammessi all'interno della ComboBox cboMetodo1. Alla riga 6 è svolto il controllo sulla lunghezza attuale del testo inserito nella casella e sull'eventuale tasto BackSpace, in modo da non ammettere ulteriori caratteri ad eccezione del tasto di cancellazione. Al verificarsi di queste due condizioni, il carattere digitato sarà semplicemente ignorato.
Il controllo sembra funzionare correttamente ma presenta un grossissimo limite: è impedita sì la digitazione di un testo più ampio di quello consentito (10 caratteri) ma non è impedita l'operazione Incolla, effettuabile mediante tastiera oppure mediante Menu popup. Limitare una ComboBox con l'utilizzo dell'API Difficoltà: 2 / 5 Tale limite può essere superato facendo uso dell'API, inviando il messaggio CB_LIMITTEXT alla ComboBox. Il messaggio può essere inviato mediante la funzione SendMessage, trattata in molti altri articoli in questa sezione.
La funzione API SendMessage è dichiarata alla riga 3, mentre alla
riga 5 è dichiarata la costante
API CB_LIMITTEXT, utilizzata per specificare il messaggio
da inviare alla ComboBox. La costante lngMaxCaratteri specificherà
il numero massimo di caratteri ammessi. Questa soluzione consente non solo di impedire la digitazione di un numero di caratteri superiore a quelle previsto ma anche di impedire l'operazione Incolla dagli Appunti di Windows. Un altro vantaggio è quello di poter sfruttare la caratteristica di autoselezione della casella: nel momento in cui la ComboBox diventa il controllo attivo il testo è automaticamente selezionato e la pressione di un tasto qualsiasi ad eccezione delle freccette provoca la sostituzione del testo precedente con quello appena digitato. Inoltre la limitazione può essere disabilitata inviando semplicemente
il messaggio CB_LIMITTEXT ed il valore 0, anziché
il numero massimo di caratteri ammessi. Questo determina una più
facile gestione della casella combinata.
|
Nella stragrande maggioranza dei casi si raccomanda l'uso della seconda soluzione e nel progetto sviluppato sono utilizzate entrambe le soluzioni per permettere un diretto confronto. La possibilità di disabilitare con facilità la limitazione è una ragione in più per preferire la seconda soluzione a quella interamente basata su Visual Basic. Fibia
FBI e Tielle
|
Torna all'indice degli HowTo |