La creazione di un progetto da zero in Visual Basic NET? Lo trovi su Opentraining.it Visual Basic Italia
Guide e Tutorials:indexed
Il controllo ImageCombo (Tutorial completo)

Uno dei controlli introdotti da Visual Basic 6.0 è ImageCombo. Dal punto di vista del semplice scopo del controllo, ImageCombo è molto simile al ComboBox standard. Ciò di cui però si può vantare questo nuovo controllo è la possibilità di inserire un'immagine a fianco di ogni voce della lista. Una seconda caratteristica che differenzia ImageCombo da ComboBox è il fatto che mentre questo supporta diversi stili, il controllo ImageCombo prevede solamente il classico stile drop-down.
Chi utilizza Visual Basic versione 6, potrà quindi inserire nel proprio progetto un controllo ImageCombo selezionando dal menu principale la voce Progetto. Scegliere poi la voce Controlli e quindi contrassegnare col segno di spunta la casella relativa alla voce Microsoft Windows Common Controls 6.0.

La proprietà che contraddistingue il controllo è la proprietà
Image
che individua l'immagine da visualizzare sulla sinistra della voce, proprio di fianco al testo. Naturalmente, come nei controlli TreeView anche ImageCombo deve essere necessariamente associato ad una ImageList ossia ad una lista di immagini personalizzabile. Anche questo controllo è comunque richiamabile attraverso la procedura descritta in precedenza.
La seconda proprietà di particolare rilievo è
SelImage
che individua l'immagine da visualizzare nel caso in cui l'utente selezioni una particolare voce della lista drop-down.
Per vedere nel dettaglio queste due proprietà, che definiscono la differenza tra ComboBox ed ImageCombo, è necessario analizzare un piccolo esempio. Per far questo sarà necessario aprire un nuovo progetto EXE Standard. In seguito, seguendo la procedura sopra descritta bisognerà avere a disposizione i controlli individuati dalla voce Microsoft Windows Common Controls 6.0. Sul piano dovremo allora trascinare il controllo ImageCombo ed il controllo ImageList. Per identificare visivamente le icone dei due controlli, seguire le indicazioni dell'immagine sottostante:

Fatto ciò bisognerà impostare la proprietà di ImageList in modo da visualizzare icone delle dimensioni di 16x16. Per fare questo un metodo consigliabile è quello di cliccare col pulsante destro del mouse sul controllo ImageList presente sulla form e selezionare dal popup menu che apparirà la voce Proprietà. Dalla finestra che comparirà sullo schermo selezionare il radio-button (o l'option button, che dir si voglia) caratterizzato dalla voce "16x16".


Inseriamo adesso due immagini nel controllo ImageList, selezionando la linguetta della finestra Proprietà di ImageList. Scegliamo ad esempio l'immagine di una faccina sorridente (senza ragione) e quella di una freccia. Entrambe le immagini possono essere agevolmente ritovate nella cartella "...\Microsoft Visual Studio\Common\Graphics\Icons" del proprio hard disk. In ogni caso è sempre possibile selezionare le icone che si preferisce, anche da percorsi differenti da quello qui indicato. Ecco come dovrebbe apparire la finestra Proprietà di ImageList:


Adesso che tutte le proprietà di ImageList che ci interessano sono settate nel modo corretto, preoccupiamoci di associare tale controllo a ImageCombo. In pratica non dovremo far altro che indicare che tutte le icone di ImageCombo provengono dalla lista di immagini che è ImageList. A questo scopo apriamo la finestra Proprietà di ImageCombo seguendo un procedimento del tutto analogo a quello già indicato per ImageList: click col tasto destro del mouse sul controllo posto sul piano. Appena aperta la finestra Proprietà selezioniamo la voce "ImageList". Dal combo box a fianco selezioniamo il controllo da associare. Se tutto va bene, dovrebbe apparire nel menu a discesa la voce "ImageList1". Selezioniamola e diamo l'OK.


Un metodo più semplice da dirsi che da farsi per ottenere il medesimo risultato è quello di inserire all'interno del codice (o ancora meglio, nell'evento Load di Form1) la seguente linea di codice:

ImageCombo1.ImageList = ImageList1

Adesso tutto è pronto. Concentriamoci sul codice. Aggiungiamo ad esempio una serie di nomi di persone, ai quali associamo una faccina insesorabilmente sorridente. Introduciamo però anche la proprietà opzionale SelImage per indicare che una volta selezionato col mouse un nome della lista, la faccina si dovrà tramutare in freccia:

Private Sub Form1_Load()
ImageCombo1.ComboItems.Add , , "Giovanni", 1, 2
ImageCombo1.ComboItems.Add , , "Elena", 1, 2
ImageCombo1.ComboItems.Add , , "Fabrizio", 1, 2
ImageCombo1.ComboItems.Add , , "Stefania", 1, 2
ImageCombo1.ComboItems.Add , , "Marcello", 1, 2
ImageCombo1.ComboItems.Add , , "Alessia", 1, 2
End Sub

Dove il nome tra virgolette indica il testo che viene visualizzato nella lista, il primo numero (che in questo esempio è 1) è l'indice che individua la prima icona nella lista di immagini ImageList mentre il secondo numero (2) è l'indice dell'icona che deve apparire quando si seleziona la voce, corrispondente in questo esempio alla seconda immagine della lista ImageList. Dando l'avvio al programma e scorrendo le voci della lista col mouse si potrà notare che le faccine dei nomi selezionati si trasformano in frecce:


Dunque lo scopo è raggiunto. Non analizzeremo oltre le proprietà di ImageCombo in quanto rispecchiano quelle già note di ComboBox. Diremo soltanto che è possibile in più specificare il livello di indentazione per ogni voce, dove indentazione è l'allineamento di una voce rispetto al bordo sinistro della lista. Ogni livello di indentazione corrisponde dunque ad uno spostamento a destra del testo e dell'icona corrispondente di 10 pixel. Per fare ciòò si assegna un valore intero alla proprietà Indentation per ciascuna delle voci presenti nella lista. Ad esempio, riprendendo il codice appena visto:

Private Sub Form1_Load()
ImageCombo1.ComboItems.Add , , "Giovanni", 1, 2, 1
ImageCombo1.ComboItems.Add , , "Elena", 1, 2, 2
ImageCombo1.ComboItems.Add , , "Fabrizio", 1, 2, 3
ImageCombo1.ComboItems.Add , , "Stefania", 1, 2, 4
ImageCombo1.ComboItems.Add , , "Marcello", 1, 2, 5
ImageCombo1.ComboItems.Add , , "Alessia", 1, 2, 6
End Sub

verrà visualizzato un risultato di questo tipo:


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