Ciao a tutti,
qualcuno potrebbe dirmi per favore come posso creare una listview in fase di esecuzione di uno script?
ehm.. se possibile la lv creata dovrebbe essere contenuta in un foglio di un sstab..
Grazie![]()
Ciao a tutti,
qualcuno potrebbe dirmi per favore come posso creare una listview in fase di esecuzione di uno script?
ehm.. se possibile la lv creata dovrebbe essere contenuta in un foglio di un sstab..
Grazie![]()
xxx
Ciao, sperando di aver capito bene ciò di cui hai bisogno, potresti fare come ti indico appresso.
Dopo aver disegnato la ListView (in questo esempio la chiamo ListView1):
Esempio in Visual Basic 6.0
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , , "Intestazione1", 1000
ListView1.ColumnHeaders.Add , , "Intestazione2", 1000, lvwColumnCenter
ListView1.ColumnHeaders.Add , , "Intestazione3", 1000, lvwColumnRight
(Ovviamente al posto di "Intestazionex" metterai la tua descrizione...)
Questo codice, permette di disegnare tre colonne (ti ho indicato anche come disporre il testo; sulla prima colonna l'allineamento è giocoforza a sinistra). Con le ListView è possibile anche creare una griglia di contenimento dei dati. Se la soluzione ti piace, dovrai inserire questa riga di codice:
ListView1.GridLines = True
Ora resta da "popolare" la ListView. Avrei però bisogno di conoscere la "fonte" dei dati.
Comunque ti faccio vedere un piccolo esempio.
Public RigaLV As ListItem - da mettere nella zona di dichiarazione
delle variabili
Set RigaLV = ListView1.ListItems.Add(, , DATO)
RigaLV.SubItems(1) = DATO
RigaLV.SubItems(2) = DATO
E' anche possibile "formattare" ogni singola cella.
Qui è ipotizzata la colonna 2 che contiene dati in grassetto e di colore rosso.
RigaLV.ListSubItems.item(1).Bold = True
RigaLV.ListSubItems.item(1).ForeColor = vbRed
Ovviamente al posto di DATO, ciò che ti interessa.
Fammi sapere.
![]()
![]()
Giulio C. - Roma
Ciao e innanzitutto grazie per la disponibilità, ma purtroppo il problema è un altro..
Il mio problema non è popolare la listview ma crearla ex-novo da codice.
In base ad un campo categorie del mio db creo tante pagine in un sstab quante sono queste categorie. Poi in ogni pagina del tab devo inserire la listview (ma ovviamente non so quante pagine ci saranno a priori e quindi non posso creare di conseguenza le listview in designtime)
Spero di essermi spiegato meglio![]()
xxx
Ciao.
Mi sono ricollegato ora ed ho forse capito meglio il tuo problema.
Se si tratta di creare una ListView in forma dinamica, ho provato questo sistema in un form; poi vedi se puoi applicare il tutto alle tue esigenze, ok? (Ora e tardi e andrei a fare le ninne!)![]()
Esempio:
Option Explicit
Private Sub Form_Load()
Form1.Controls.Add "MSComctlLib.ListViewCtrl.2", "ListView1"
With Form1!ListView1
.Visible = True
.View = lvwReport
.GridLines = True
.Width = 3300
.Height = 2000
.ColumnHeaders.Clear
.ColumnHeaders.Add , , "1", 1000
.ColumnHeaders.Add , , "2", 1000, lvwColumnCenter
.ColumnHeaders.Add , , "3", 1000, lvwColumnRight
End With
End Sub
Con questo sistema (che ho provato ripeto di corsa), è possibile creare dinamicamente una listview con intestazioni di colonne e griglie in un form.
Ho però anche notato che per funzionare, va deselezionata una voce nella finestra della proprietà del progetto:
Progetto -> Proprietà del progetto -> Crea -> Rimuovi informazioni sui controlli ActiveX non utilizzati.
Fai delle prove mettendo al posto del form la tua SSTab; credo comunque che questo metodo utilizzato possa esserti utile.
Fammi sapere.
P.S.: Salutami Spezia, dove ho carissimi amici!![]()
![]()
![]()
Giulio C. - Roma
Ciao e ancora grazie per il tuo aiuto.
Appena mi scollego provo subito il tuo esempio![]()
Se puo' essere d'aiuto dopo un lungo peregrinare su internet ho trovato un modo per creare oggetti run time (non solo listview ma anche quelli).
Basta trascinare sul form un listview in design mode, dargli visible=false e index = 0 (in questo modo l'oggetto verra' trattato come un array)
Dopodiche' se ne potranno richiamare e ricreare quanti se ne vogliono nel seguente modo posizionandoli dove meglio si crede:
Grazie ancora per il tempo che mi hai dedicato, ciaocodice:Load listview1(listview1.Ubound+1) With listview1(listview1.Ubound) .Move X, Y, W, H .Visible = True 'aggiunta colonne, headers, righe ecc End With
Te la/li saluterò senz'altro!Originariamente inviato da Giulio C.
...
P.S.: Salutami Spezia, dove ho carissimi amici!![]()
![]()
![]()
![]()
xxx