Guide e Tutorials:indexed | ||||||
Il controllo ListView (Prima parte) Attraverso questo controllo messo a disposizione da Microsoft, è possibile generare una lista di voci a più righe e più colonne. Questo rappresenta la funzione principale del controllo, alla quale si deve però aggiungere una serie di facilitazioni nella gestione del contenuto di cui parleremo nel corso dell'articolo. Cominciamo innanzitutto dicendo che ListView è utilizzabile importando nel progetto il gruppo di controlli denominato Microsoft Windows Common Controls x.0. L'icona del controllo che interessa a noi è indicato dall'immagine seguente: In secondo luogo possiamo dire che ListView non è un controllo bloccato: proprio come il più semplice ListBox ne possono essere impostate le dimensioni e la posizione sul piano, semplicemente allungando o trascinando il controllo sulla form oppure attraverso la proprietà di altezza Height, larghezza (o lunghezza) Width, distanza dal bordo superiore del piano Top, distanza dal bordo sinistro del piano Left: In ogni caso, quello che c'interessa più da vicino è il contenuto della tavola Proprietà visualizzabile cliccando sul controllo quando già è posizionato sulla form, col tasto sinistro del mouse. Attraverso questa tavola è possibile impostare una serie di parametri fondamentali per rendere il controllo in linea con le proprie esigenze di progettazione. La prima proprietà che s'incontra nella tabella Generale di Proprietà è MousePointer che indica il puntatore del mouse da visualizzare quando lo stesso si muove sopra la ListView. Il miglior modo per apprendere le diverse tipologie di puntatori è quello di sperimentarli tutti uno per uno. La seconda proprietà è la proprietà View, impostabile attraverso uno dei seguenti quattro valori: lvwIcon visualizza ogni voce nella lista usando un'icona grande ed una descrizione di testo lwSmallIcon visualizza ogni voce nella lista usando un'icona piccola ed una descrizione di testo lvwReport visualizza ogni voce con un'icona piccola, una descrizione di testo e, se sono fornite, ulteriori informazioni. In ogni caso più in là nel corso dell'articolo si potrà meglio apprezzare le differenze tra queste quattro diciture. Proseguendo lungo questa carrellata di proprietà, incontriamo LabelEdit che può essere impostata su lvwAutomatic per consentire all'utente di modificare, dopo averci cliccato sopra una volta, una voce testuale della ListView o sulvwManual per disattivare l'opzione. Troviamo quindi la proprietà BorderStyle che può essere impostata su contorno singolo ossia ccFixedSingle oppure nessun contorno ccNone. Tale caratteristica è del tutto simile a quella già incontrata in altri controlli. Simile a quella di altri oggetti è anche la proprietà Appearance che può essere rispettivamente su cc3D che dà al controllo un'apparenza tridimensionale o su ccFlat che la rende invece del tutto piatta. Abbiamo per finire le ultime due proprietà, OLEDragMode e OLEDropMode che indicano se il controllo può fungere rispettivamente da origine e da destinazione per il trascinamento OLE. Sulla sinistra rispetto a questa serie di opzioni, abbiamo una colonna di checkbox che impostano ulteriori caratteristiche del controllo. Possiamo infatti notare la proprietà HideColumnHeaders che nasconde le intestazioni di colonna. Una ListView senza le intestazioni di colonna è simile a quella mostrata poco sotto. HideSelection che, impostato su True come per default, nasconde la voce della ListView selezionata se il controllo perde lo stato attivo ossia se si seleziona un controllo diverso da ListView. Impostare tale proprietà su False indica invece che anche nel momento in cui si selezionerà un controllo differente da ListView, la voce selezionata rimarrà tale. LabelWrap imposta la disposizione delle etichette nel caso in cui il controllo sia in modalità lvwIcon o lvwSmallIcon. MultiSelect permette di selezionare invece più voci alla volta, come dimostra la figura qui sotto: Enabled determina invece se il controllo è abilitato o non utilizzabile. AllowColumnReorder dà all'utente la facoltà di riordinare e quindi di cambiare la posizione delle colonne nel caso in cui il controllo ListView sia in modalità lvwReport e a patto naturalmente che non si sia impostata la proprietà HideColunmHeaders. CheckBoxes permette eventualmente di visualizzare delle checkbox accanto ad ogni voce della ListView, come mostrato nella figura sottostante: FlatScrollBars sostituisce le normali barre di scorrimento con barre piatte. FullRowSelect permette di selezionare l'intera riga e non soltanto la colonna corrispondente, ad esempio: GridLines disegna una griglia sul controllo in modo da farlo diventare graficamente simile ad un foglio di Microsoft Excel: HotTracking imposta il controllo in modo da renderlo in linea con la nuova interfaccia utente di Microsoft ossia l'ActiveDesktop: HoverSelection per il quale, se impostato su True, basta scorrere il puntatore sulla voce prescelta per selezionarla, senza bisogno di cliccarci sopra. Adesso che abbiamo visto sommariamente le proprietà che rendono particolare il controllo ListView, alle quali si aggiungono naturalmente quelle standard, sottolineiamo il fatto che è possibile rendere attive tali proprietà anche attraverso la finestra Proprietà posta sulla destra della finestra di progettazione oppure da codice impostando ad esempio:
ed ancora:
e così via. Naturalmente come s'è già capito, assegnare il valore True da codice a tali proprietà è equivalente a spuntare la checkbox corrispondente nella tabella Generale della finestra Proprietà del controllo. Così, per deselezionare le proprietà si potrà indicare False invece che True:
eccetera. Non c'è la necessità di assegnare da codice un valore True o False alla proprietà se questa è per impostazione già settata nel modo in cui la intendiamo usare. Ad esempio la proprietà Multiselect è per default False. Non sarà quindi necessario indicare nel codice:
a meno che precedentemente non sia stata impostata su True e si voglia recuperare adesso l'impostazione originaria. Associato al controllo ListView troviamo un'altro controllo del gruppo Microsoft Windows Common Controls x.0 ossia ImageList, di cui si discute in un articolo a parte. Associare i due controlli significa mettere a disposizione delle voci e delle intestazioni di colonna di ListView le immagini contenute in ImageList. Se dunque si intende utilizzare icone nel controllo ListView sarà opportuno impostare quale controllo ImageList utilizzare, siccome un progetto può contenere più liste d'immagini. Per fare ciò ritornare nella finestra Proprietà di ListView cliccando sul controllo col tasto destro del mouse e scegliendo la voce 'Proprietà' dal popup-menu che apparirà. Scegliere quindi la tabella Elenchi di immagini e selezionare il controllo ImageList che contiene le immagini che si intende utilizzare. Nel caso in cui nessuna lista di immagini sia presente sulla form, non sarà possibile alcuna selezione. In caso contrario, nelle combobox presenti sulla tabella verranno visualizzate tutte le ImageList utilizzabili: Il passo successivo da compiere consiste nell'impostare il numero di colonne, le dimensioni di ciascuna di esse e l'intestazione di colonna. A tale scopo sarà nuovamente necessario aprire la finestra Proprietà di ListView e selezionare questa volta la tabella Intestazioni di colonna. Premere il pulsante Inserisci colonna tante volte quante colonne si vuole visualizzare nel controllo ListView. E' poi possibile impostare la lunghezza di ciascuna colonna attraverso la textbox denominata 'Width', il testo attraverso 'Text', l'allineamento del testo all'interno dell'intestazione attraverso 'Alignment', la chiave per recuperare la colonna specifica attraverso 'Key', informazioni aggiuntive con 'Tag' e l'indice dell'icona associata all'intestazione di colonna attraverso 'Indice icona'. Nell'esempio che verrà proposto successivamente si comprenderà meglio come utilizzare tutti queste caratteristiche delle colonne. E' poi possibile modificare i tipi di carattere associati al contenuto della ListView attraverso la tabella Carattere, nella quale sono presenti varie opzioni di caratteri, di dimensione dei caratteri, di formattazione del testo e così via. Passando alla tabella Colore si può modificare a piacimento il colore di sfondo del controllo e del testo, impostando anche tonalità personalizzate. Altro è il contenuto della tabella Immagine che consente di applicare un'immagine di sfondo alla ListView come nelle applicazioni per il Web, nel caso in cui l'immagine risulti più piccola del controllo, verrà affiancata tante volte in una serie 'a mattoncini' per riempire la ListView: E' poi disponibile un'ulteriore tabella che vedremo in seguito. Adesso concentriamoci sul codice necessario a popolare la ListView. Diamo per scontato che sia già presente il controllo sul piano e che non ne siano state alterate le proprietà di default. Innanzitutto bisogna impostare la collezione 'itmX'. In secondo luogo apriremo un ciclo nel quale aggiungeremo inizialmente la voce della prima colonna e poi via via tutte le voci delle colonne successive:
dove 'SubItems(1), SubItems(2)...' indicano tutte le voci che compaiono sulla stessa linea della voce della colonna1, impostate attraverso la terza linea di codice: A questo punto si riceverà un messaggio d'errore del tipo: Valore della proprietà non valido ed in operazione di debug verrà indicata la terza linea. L'errore sta nel fatto che ancora non abbiamo impostato il numero di colonne necessario all'applicazione. In questo esempio ci serviranno tre colonne, come mostra l'immagine sopra. Una relativa alle voci, una relativa alle prime sotto-voci e l'ultima relativa alle seconde sotto-voci. Sarà quindi sufficiente tornare di nuovo nella finestra Proprietà tabella Intestazione di colonna e premere tre volte il pulsante 'Inserisci colonna'. Inserire poi nella casella di testo 'Text' la dicitura "Colonna1" per la prima colonna, "Colonna2" per la seconda e "Colonna3" per la terza. Non sarà per il momento necessario modificare le dimensioni delle colonne. Nell'articolo che seguirà, oltre a concludere questo esempio con l'inserimento di icone e la gestione dei metodi e degli eventi supportati dal controllo, si vedranno alcune particolari caratteristiche di ListView. |
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 |