Newsgroup: it.comp.lang.visual-basic
Titolo: [?] eliminare una riga da una ListView

Salve a tutti,
come faccio ad eliminare una riga da una ListView??
Ho provato cosě:
ListView1.ListItems(SelIndex).ListSubItems.Remove
ma...mi da un errore: Argomento non facoltativo
Dove ho sbagliato??
Grazie.
Paolo.

come faccio ad eliminare una riga da una ListView??
E'
più semplice di quanto pensi :)
listview.ListItems.Remove indice
Saluti...
--------------------------------
Inviato via 
http://usenet.iol.it
 

 wrote in message
157Z29Z81Z46Y9...@usenet.iol.it...


dove va messo l'indice??
Scherzi a parte; suppongo che prima di eliminare la riga, dovrai
selezionarla giusto? Quindi ti basta scrivere:
listview.ListItems.Remove
listview.SelectedItem.Index
e così elimini la riga selezionata.
Ora
però fai attenzione ad una cosa, se carichi il contenuto di un tabella in
una listview, non sempre l' ordine che hai nel controllo è lo stesso che
identifica i records. In questo caso rischi di cancellare una cosa per un
altra. Ora non so quello che devi fare, però tieni a mente quanto ti ho
detto e magari usa la proprietà tag, tanto per dirne una.


 e passa la paura :))
Grazie ancora!!   ;-)
Paolo.


perchè?
E che ne so io :))
Considera che la proprietà index viene
impostata sull'ordine di creazione degli oggetti di un insieme, quindi l'
indice del primo oggetto dell' insieme è sempre uno 1. Grazie a dio :) Se
nella tua listview hai un solo item, il suo indice sarà sempre 1, perchè è
l' unico della listview. Se hai due righe la prima avrà indice 1 e la
seconda indice 2, ma l' indice è solo un progressivo di riga, della
listview però!
Capiamoci, l' indice che vedi nella listview, non ha niente
a che fare con qualche ipotetico codice di un record in una tabella.
Ti
ripeto, non so che devi fare, se magari spieghi meglio quello che fai e
quello che vorresti forse risolviamo qualcosa, altrimenti non so dirti di
più.


 piů.


>Hai ragione, scusa :-((
Eh, la ragione è dei fessi...dove stà il tuo
codice?? >:[ ]
Facciamo una cosa, ti posto un esempio che improvviso ora,
poi vdei te come adattarlo al tuo codice.
Per farlo andare apri un nuovo
progetto, sbattici dentro un bottone e una listview e...incorcia le dita
:))
Option Explicit
Private Const Nome = "Nome"
Private Sub
Command1_Click()
    If MsgBox("Vuoi Cancellare la riga selezionata?",
vbQuestion + vbYesNo, "Prova") = vbYes Then
        MsgBox "indice della
riga: " & ListView1.SelectedItem.Index
ListView1.ListItems.Remove ListView1.SelectedItem.Index
    End If
End
Sub
Private Sub Form_Load()
    Dim lsItem As ListItem
 
    Dim
strNome As String
    Dim i As Integer
 
    With ListView1
.ColumnHeaders.Add , "Nome", "Nome", 2000
        .ColumnHeaders.Add ,
"Cognome", "Cognome", 2000
 
        .View = lvwReport
.FullRowSelect = True
        .LabelEdit = lvwManual
    End With
For i = 1 To 3
        strNome = CStr(Nome & i)
 
        Set
lsItem = ListView1.ListItems.Add(i, , strNome)
        lsItem.SubItems(1)
= "Eeeh " & CStr(i) & " !!!"
 
        Set lsItem = Nothing
Next i
End Sub



metodo Remove della collection ListItems;
la funzione Remove accetta
1) l'indice (numero) dei ListItem da eliminare
2) la property Key dell'elemento ListItem da eliminare
per eliminare l'elemento correntemente selezionato (se c'è), supponendo che
la ListView si chiami ListView1, prova il seguente codice
    Dim i As Long
    With ListView1
        If Not (.SelectedItem Is Nothing) Then
            For i = 1 To .ListItems.Count
                If .ListItems(i) Is .SelectedItem Then
                    Set .SelectedItem = Nothing
                    .ListItems.Remove i
                    Exit For
                End If
            Next
        End If
    End With
ciao