![]() |
EmiComboBoxIncControllo ActiveX ComboBox a ricerca incrementale |
Download - Manuale in linea
Il controllo ActiveX ComboBox distribuito con il Visual Basic 6 è sempre stato uno dei miei favoriti e com tale, uno dei più utilizzati nei miei progetti di sviluppo. È forse per questo che in questo controllo, più che in altri, ho sempre sentito la necessità di andare oltre e di evidenziare alcune funzionalità che, stranamente, i suoi progettisti avevano tralasciato di esportare esplicitamente verso l'esterno.
Anche se il controllo da me proposto non ha, per filosofia di progettazione, un'associazione esplicita ai dati ADO come invece lo ha il ComboBox standard, ha alcune funzionalità che lo rendono a mio avviso molto interessante, soprattutto per quanto riguarda poi l'utilizzo da parte dell'utente finale (se desideri un ComboBox incrementale che sia anche associato ai dati dai un'occhiata al nostro controllo ActiveX DBCodDescr).
La funzionalità più importante è quella di essere un controllo a ricerca incrementale. Se non è immediatamente chiaro cosa significhi ricerca incrementale vediamo di capirci con un esempio.
Consideriamo la seguente lista di valori aggiunti al controllo tramite il comando AddItem (1,12,13,21,22,111) e consideriamo la pressione consecutiva del tasto "1" per tre volte di fila quando il fuoco è attivo su un ComboBox. Se il ComboBox é quello standard la sequenza dei tre tasti provocherà la comparsa nell'ordine del numero 1, quindi del numero 12 e infine del numero 13 con grave imbarazzo dell'utente che invece si aspettava, a rigor di logica, tutto un altro comportamento. Per chi ha usato il ComboBox standard il comportamento è chiaro, premere tre volte 1 significa ottenere il terzo elemento della ComboBox che inizia per 1. Non si può, però, affermare che questo comportamento sia banalmente evidente e utizzabile anche da un utente inesperto. Se però il Combo è il nostro allora si ha che la seguenza dei tre tasti genera la comparsa nell'ordine dei seguenti valori: prima il valore 1, poi il valore 111 e infine ancora il valore 111 con gioia e gaudio dell'utente che già al secondo tentativo si trovato proposto il valore desiderato.
Anche se banale, spero che quest'esempio abbia chiarito il diverso comportamento dei due controlli è la maggiore coerenza del nostro controllo durante l'utilizzo da parte di un utente inesperto
Durante la ricerca di elementi all'interno del combo è possibile azzerare la ricerca tramite il tasto CANC. La ricerca si annulla automaticamente se non si digita caratteri per un tempo superiore a 5 secondi.
Il controllo presenta inoltre due proprietà aggiuntive rispetto a quelle esposte dal controllo standard. La proprietà PermitFreeText e la proprietà MaxLength. Difatti, di default, non è possibile aggiungere da tastiera altri elementi alla lista se non quelli aggiunti via codice tramite il comando AddItem. Tramite tastiera è solo possibile ricercare gli elementi come visto sopra. Se si imposta però la proprietà booleana PermitFreeText a TRUE allora è possibile inserire nuovi elementi nella lista. L'elemento viene aggiunto alla lista se il fuoco abbandona il controllo o se si preme il pulsante RETURN. La seconda proprietà è collegata a tale modalità. Se diversa da zero imposta infatti il numero massimo di caratteri che un nuovo elemento della lista può contenere. Tale valore non influenza gli elementi aggiunti tramite il comando AddItem ma solo quelli aggiunti tramite tastiera.
Download - Manuale in linea