Newsgroup: it.comp.lang.visual-basic
Titolo: Mascondere colonna in listview

Vorrei nascondere una colonna in una listview senza dare la possibilità di
poterla visualizzare.
Adesso ho imposta la larghezza a 0 ma se vado sulla colonna adiacente la
posso visualizzare spostando la colonna.
Esiste la possibilità di nasconderla lasciando però a disposizione la
possibilità di allargare o stringere le alre colonne ?
Grazie, Alberto


Non sapendo per quale motivo vuoi usare una colonna nascosta, provo
ad ipotizzare che possa essere utilizzata per eseguire un ordinamento
su una colonna visibile. Un esempio per fare cio', ad esempio sulle date,
e' su msdn al' url:
http://support.microsoft.com/support/kb/articles/Q170/8/84.asp
Nell' esempio, viene mostrato come inviare un messaggio alla listview
per imporle di far eseguire una propria funzione di comparazione tra due listitem
al posto di quella standard.

 ha scritto nel messaggio
news:98h690$1v836$1...@ID-56381.news.dfncis.de...


 Grazie, Alberto
Le colonne del listview non si possono nascondere.
Devi per forza eliminare le colonne che non vuoi vedere.
Byee
Zeross

Ciao,
come ti hanno detto in una listview l' unico modo per rendere una
colonna invisivbile è quello di impostare le proprie dimensioni a zero,
logicamente se spomelli un con le altre, potresti far apparire magicamente
anche questa apparentemente invisibile.
Io avevo un problema simile al
tuo, caricavo in una listview il contenuto di un recordset, mi serviva però
portarmi dietro anche l' indice univoco di ogni record, ma non volevo che
questo si vedesse nella listview. Ho pensato anche io a nascondere una
colonna con dentro il codice di oogni record, ma come soluzione non era il
massimo perchè, come dicevo sopra, la colonna c'è!!
La soluzione l' ho
trovata nella proprietà tag che ti permette di impostare un'espressione che
puoi memorizzare sensa che nessuno la veda perchè non è una colonna.
Ti
posto cosa avevo fatto io:
            Do While Not m_RecSet.EOF
Set lsItem = lsvMp3.ListItems.Add()
lsItem.TAG = m_RecSet("CodiceID")
                lsItem.Text =
m_RecSet("Titolo")
                lsItem.SubItems(1) = m_RecSet("Autore")
lsItem.SubItems(2) = m_RecSet("Album")
                ......
...
                ....
In questo modo ogni riga della listview è
associata allo stesso codice che ho nel db per ogni record, nessuno vede la
colonna con il numerillo e tutti siamo felici e contenti :))
Saluti...
--------------------------------
Inviato via 
http://usenet.iol.it
 

colonna invisivbile è quello di impostare le proprie dimensioni a
]zac[

Io ho creato una tab in acc con i campi delle tabelle dei dati che conterrà
la lv, la descrizione del campo, il nome della lv. I campi id delle tabelle
sono nominati con le prime due lettere ="ID" ed io controllo solo quelle,
quindi se la descrizione del campo corrisponde ad "ID-lpz" questa colonna
sarà nascosta con Width=0
Quando lancio il prg carico tutte le lv, che sono contenute in una SStab,
con questo codice:
Public Sub lvHeads()
On Error GoTo Errman
'Intestazione di tutte le List view nella SSTAB1
frmCliCall.lvImp.ColumnHeaders.Clear
frmCliCall.lvImpDett.ColumnHeaders.Clear
Dim rsHeads As Recordset
Dim clmX As ColumnHeader
    Set rsHeads = MainDB.OpenRecordset("LV-HEADS", dbOpenDynaset)
    Do While Not rsHeads.EOF
        'headers
        Do While rsHeads!Lview = "lvImp"
            Set clmX = frmCliCall.lvImp.ColumnHeaders.Add()
            If Left(rsHeads!TextView, 2) = "ID" Then
                clmX.Text = rsHeads!TextView
                clmX.Width = 0
            Else
                clmX.Alignment = lvwColumnCenter
                clmX.Text = rsHeads!TextView
            End If
            rsHeads.MoveNext
        Loop
        Do While rsHeads!Lview = "lvImpDett"
            Set clmX = frmCliCall.lvImpDett.ColumnHeaders.Add()
            If Left(rsHeads!TextView, 2) = "ID" Then
                clmX.Text = rsHeads!TextView
                clmX.Width = 0
            Else
                clmX.Alignment = lvwColumnCenter
                ......................
                ......................
                ......................
                ......................
Il mio problema è che quando vado ad aggiungere un record in un'altra lv da
una form ho bisogno, per l'integrità referenziale, dei campi ID referenziati
ma non vorrei vederli, infatti li nascondo con Width = 0.
Ho provato a modificare :
            If Left(rsHeads!TextView, 2) = "ID" Then
                clmX.Text = rsHeads!TextView
                clmX.Width = 0
con :
            If Left(rsHeads!TextView, 2) = "ID" Then
                clmX.Tag = rsHeads!TextView
            Else
                clmX.Alignment = lvwColumnCenter
                clmX.Text = rsHeads!TextView
            End If
ma vedo la colonna senza intestazione ma con i valori in ogni riga.
Dove sbaglio skunk?

Lo dico perchè anche io ho lo stesso problema.
In questo caso potrebbe bastare farsi un array (o una collection, come suggerito da dbg, 
parallelo alla listview, con l' indice che 
corrisponde alle righe della list view (eventuali problematiche di ordinamento a parte).
Eventuali proprieta' Tag e' meglio abituarsi a farne a meno perche' con vb7 spariranno.
ciao, hal

 ha scritto nel messaggio
news:7S%q6.68170$Xj7.1...@news.infostrada.it...

Mi puoi fare un'esempio pratico ? :-P

?? in che senso?
Crei una collection (ListColl as new collection) e ogni volta che aggiungi
qualcosa alla list box fai anche ListColl.Add 'NewItem'.
Quando vuoi accedere al valore nascosto che corrisponde all'item selezionato
della listbox leggi il ListIndex (l'item selezionato della listbox) gli
sommi 1 e usi il valore che retituisce ListColl.Item ('NumItem').
Salve
            Dbg
ALCAU (ST1) ha scritto nel messaggio ...


 ha scritto nel messaggio
news:kYpr6.1509$6W.2...@news.infostrada.it...

Ma allora devo inserire anche una listbox oltre alla listview che visualizza
i dati ?

No scusa, al posto di listbox leggi listview.
Su dai, fai due prove, non aspettare che arrivi il codice gia' fatto, impari
molto di piu' a farlo da te.
Salve
                Dbg
ALCAU (ST1) ha scritto nel messaggio ...


impari molto di piu' a farlo da te.
E dategli due righe di codice a stò
ragazzo!!! :))
Ma non vi state complicando un po troppo la vita?
Saluti...(madoooonna che caldo oggi a roma!!)
