|
|
Visual BasicLEZIONI - I CONTROLLI LISTBOX E COMBOBOX In questa lezione ci occuperemo di altri due controlli di VB molto usati: ListBox, e ComboBox. Il ListBox (cerchiato in blu) e il ComboBox (cerchiato in rosso) sono utilizzati con lo stesso scopo, cioè visualizzare una lista di opzioni selezionabili dall'utente; la differenza fondamentale tra i due controlli è il modo in cui la lista è presentata. Nel ListBox, infatti, gli elementi della lista sono sempre visibili, mentre nel ComboBox la lista è "a scomparsa", ovvero è visibile soltanto se l'utente fa clic sulla freccia verso il basso a destra del controllo; nel ComboBox, inoltre, è possibile digitare un valore che non compare nella lista di quelli disponibili. ![]() Per il resto, i due controlli si comportano nello stesso modo e molte proprietà e metodi funzionano allo stesso modo. Per aggiungere valori ad un ListBox o ad un ComboBox si possono seguire due strade: utilizzare la proprietà List disponibile nella Finestra delle proprietà oppure il metodo AddItem richiamabile da codice. Vediamo un esempio di questa seconda soluzione: List1.AddItem "Marco" Tali istruzioni aggiungono tre valori in una ListBox; lo stesso identico codice funziona con una ComboBox, basta cambiare il nome dell'oggetto. Per eliminare tutte le voci da un elenco si deve richiamare il metodo Clear: List1.Clear Se, invece, si desidera eliminare un ben preciso elemento, è necessario conoscerne la posizione all'interno della lista (il cosiddetto indice). A questo proposito, è importante ricordare che l'indice delle voci ha base 0, ovvero il primo elemento di una lista ha indice 0, il secondo ha indice 1, il terzo 2, e così via. Se, ad esempio, vogliamo rimuovere il sesto elemento contenuto in un controllo ListBox, l'istruzione da utilizzare è: List1.RemoveItem 5 Se l'indice specificato non esiste (ad esempio si tenta di cancellare il quinto elemento di una lista che ha solo quattro elementi) verrà generato un errore. List1.ListIndex = 1 Detto questo, è molto semplice rimuovere l'elemento selezionato in una lista; per compiere tale operazione, infatti, basta il comando: List1.RemoveItem List1.ListIndex La proprietà Text restituisce la stringa selezionata in un ListBox o visualizzata in un ComboBox. Se, invece, vogliamo conoscere il valore di un particolare elemento di una lista, possiamo utilizzare la proprietà List, che richiede come parametro l'indice dell'elemento che si vuole recuperare. Ad esempio: MsgBox List1.List(2) Visualizza una finestra di messaggio contenente il valore del terzo elemento della lista. Come abbiamo già detto, le proprietà e i metodi sopra esposti sono comuni sia al controllo ListBox sia al controllo ComboBox. Qualche parola va però ancora spesa a proposito della proprietà Style del ComboBox. Essa può assumere tre valori: 0 - Dropdown combo (casella combinata a discesa, predefinita), comprende una casella di riepilogo a discesa e una casella di testo; l'utente potrà eseguire una selezione nella casella di riepilogo o digitare nella casella di testo; 1 - Simple combo (casella combinata semplice), comprende una casella di testo ed una casella di riepilogo non a discesa, cioè sempre visibile; l'utente potrà eseguire una selezione nella casella di riepilogo o digitare nella casella di testo. Le dimensioni di una casella combinata semplice si riferiscono a entrambi i componenti. Per impostazione predefinita, la casella è dimensionata in modo che nessun elemento dell'elenco sia visualizzato; per visualizzare elementi dell'elenco, aumentare il valore assegnato alla proprietà Height; 2 - Dropdown list (casella di riepilogo a discesa), questo stile consente soltanto la selezione dall'elenco a discesa. ![]() Ora che abbiamo visto come funzionano i controlli ListBox e ComboBox, facciamo un esempio pratico del loro utilizzo, così da fissare meglio i concetti che sono stati trattati. La nostra applicazione sarà così strutturata: una ComboBox conterrà un elenco di elementi; selezionandone uno e facendo clic su un pulsante, la voce selezionata verrà inserita in una ListBox e rimossa dal ComboBox; un altro pulsante, poi, permetterà di rimuovere l'elemento dalla ListBox e di reinserirlo nella ComboBox. Come sempre, potete scaricare il form contenente solamente gli elementi dell'interfaccia nella giusta posizione, senza il codice. Prima di tutto dobbiamo popolare il ComboBox con gli elementi che possono essere selezionati dall'utente; utilizzeremo il metodo AddItem nell'evento Form_Load, che, come abbiamo già detto, viene eseguito quando il form viene caricato in memoria. Inseriamo quindi un certo numero di voci: Private Sub Form_Load() Ora vogliamo fare in modo che, premendo il pulsante Inserisci, l'elemento corrente venga inserito nel ListBox e, subito dopo, venga rimosso dal ComboBox: Private Sub Command1_Click() Ogni istruzione è commentata, è necessario spendere qualche parola solo sul ciclo If... Then... Else. Dopo l'inserimento di una voce, l'elemento viene rimosso dal ComboBox; a questo punto, la routine controlla quanti elementi sono rimasti, utilizzando la proprietà ListCount: se è maggiore di 0, cioè se sono presenti ancora voci nella lista, seleziona la prima, altrimenti disattiva il pulsante, poiché non possono essere selezionati e quindi inseriti altri elementi. Private Sub Command2_Click() Notiamo che il codice viene eseguito solo se la proprietà ListIndex del ListBox è maggiore o uguale a 0, ovvero se è stato selezionato un elemento nella lista. |