ComboBox, ListBox, Label e Image : (22/03/03) Ovvero: come utilizzare una ComboBox o una ListBox per visualizzare delle immagini (foto) in un controllo "Image" o in una Label (etichetta). Abbiamo visto nel paragrafo precedente, come "caricare" con dati una ComboBox o una ListBox: sfruttando la proprietà "RowSource", alla quale va associato il riferimento alle celle che contengono i dati da visualizzare. In questo esercizio ci occupiamo di come associare la selezione di un dato presente nel "menu" dei due controlli, con la comparsa di un immagine associata al dato stesso. Per poter visualizzare delle immagini è necessario di disporre di due "controlli" (o "oggetti") presenti nella "casella degli strumenti" tipica di una UserForm: il controllo "Image", che grazie alle sue "proprietà" consente una migliore gestione di come visualizzare una determinata foto o immagine, oppure di una normale "Label" che offre decisamente poche possibilità. Vediamo le caratteristiche di questi due controlli:
Ma veniamo
all'esempio di questo esercizio. In una zona del foglio di lavoro, creeremo
un elenco che formerà il RowSource della ComboBox o della ListBox. Le ho
usate tutte e due solo per mostrare le istruzioni usate che comunque
differiscono di poco, e perchè la destinazione delle immagini collegate
all'elenco richiamato dalla ListBox sarà la Label1. Il controllo Image
supporta i seguenti formati di file: Condizione necessaria sarà comunque di definire una cartella che conterrà le immagini, e sarà opportuno chiamare le immagini con un nome che sarà lo stesso che scriveremo nel nostro elenco sul foglio di lavoro. Io ho chiamato le immagini : foto1.ipg, foto2.jpg, ecc.ecc. mentre nell'elenco ho usato solo il nome: foto1, foto2, ecc. senza estensione: in questo modo nelle istruzioni imposto una sola volta il formato dell'estensione: .jpg. Vediamo le istruzioni: Nell'UserForm_Activate faccio caricare le liste dei controllo ComboBox e ListBox :
Private Sub UserForm_Activate() Il comando per il caricamento dell'immagine nel controllo Image, si avvale della funzione LoadPicture seguita dall'indicazione del percorso dove risiede l'immagine. Poichè dovremo poter caricare più immagini a scelta, uso una variabile ( X ) per definire di volta in volta il nome che verrà selezionato nella ComboBox, sfruttando quindi l'evento ComboBox_Click per inserire le istruzioni, queste:
Private Sub ComboBox1_Click() Per la ListBox stesso discorso, con poche varianti, in particolare la destinazione che è una Label:
Private Sub ListBox1_Click() E questa un immagine dei risultati: frecce verdi per ListBox1 e Label1, frecce rosse per ComboBox1 e Image1. Nella colonna A vediamo l'elenco che forma il RowSource:
|