EXCLUIR LINHAS SELECIONADAS DO LISTVIEW

DANLEONHART 03/10/2011 22:06:28
#385827
Pessoal...

Como faço para excluir as linhas selecionadas em um ListView ???
Lembrando que as linhas podem ser sequenciada ou salteada...

Tentei seguindo este exemplo mas não deu:
http://www.vbmania.com.br/pages/index.php?varModulo=Forum&varMethod=abrir&varID=303636
SAMUKA 03/10/2011 22:21:53
#385828
Tente esse código

 Dim i As Integer
With ListView1
For i = 1 To .ListItems.Count
If .SelectedItem.Selected = True Then
.ListItems.Remove (.SelectedItem.Index)
End If
Next i
End With


O segredo está na propriedade SelectedItem.Selected
DANLEONHART 04/10/2011 05:50:38
#385833
Fiz isso...mas exclui se as linhas estiverem juntas...tente excluir a 2ª e 4ª linha ao mesmo tempo...só apaga a ultima selecionada...
DANLEONHART 05/10/2011 19:36:43
#386049
GOODSPEAKERS:
Tentei usar este código adaptado em uma opção com o botão direito do mouse...mas não funcionou...se seleciono 5 itens, apenas 3 são excluídos...se seleciono 15 ou mais linhas acontece o mesmo, somente umas 3 ou 4 são excluídas...
FININHO 06/10/2011 00:36:52
#386063
Experimenta dessa forma

Dim i As Integer
With ListView1
For i = 1 To .ListItems.Count
If .ListItems(i).Selected=True Then
.ListItems.Remove (i)
i = i - 1
End If
Next i
End With

DANLEONHART 08/10/2011 05:54:23
#386297
GOODSPEAKERS: Como disse, uso MenuPopup para chamar essa sub...e com as dicas citadas acima não conseguí...
se selecionada a linha 3, 6 e 8 por exemplo, a 3 e a 6 eram excluídas mas a 8 ficava...
deduzí que ocorria isso porque sempre que uma linha é excluída o [Ô]ListItens.Count[Ô] é renovado,
mudando assim as posições das linhas selecionadas...então resolví usar o [Ô]nome[Ô] do ítem da linha selecionada como referência de exclusão...ficou assim:


Sub Excluir_Linha()
On Error Resume Next
Dim CL As New Collection
Dim I As Long
Dim Z As Long

For I = 1 To Lv1.ListItems.Count
If Lv1.ListItems(I).Selected = True Then
CL.Add Lv1.ListItems(I).Text
End If
Next I

For Each L In CL
For Z = 1 To Lv1.ListItems.Count
If Lv1.ListItems(Z).Text = L Then
Lv1.ListItems.Remove Z
End If
Next Z
Next L

Set CL = Nothing

End Sub


A todos, muito obrigado pelas dicas !
Tópico encerrado , respostas não são mais permitidas