Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: ssccaann43 en Abril 06, 2010, 02:29:46 pm
-
Bien, estuve buscando y tratando de hacerlo y no logré mucho.
El caso es que tengo un listado, por ejemplo:
1 aaa x
2 bbb x
3 cccc y
4 ddd y
5 eee z
6 ddd y
Ahora bien, lo que necesito es una rutina, que me permita eliminar todo lo que contenga X en la tercera columna...! Yo estoy tratando con algo así...
Private Function Eliminar_Item_ListView(ListView As ListView)
'On Error Resume Next
Dim i As Integer
Dim j As Integer
With ListView
' -- Recorrer todos los items
For i = 1 To .ListItems.Count
For j = i + 1 To .ListItems.Count
If .ListItems.Item(i).ListSubItems(2).Text = "X" Then
' -- Si es igual eliminar
.ListItems.Remove .ListItems.Item(i).Index
j = j - 1
End If
If j = .ListItems.Count Then
Exit For
End If
Next
Next
End With
End Function
Alli exactamente teniendo el listado de arriba lo hace...
Pero si solo muestro las X
1 aaa x
2 bbb x
y deseo eliminar o borrar las X con ese codigo, me elimina solo una...! :(
Agradezco si alguien puede ver el error. Saludos
-
El listView no suelo utilizarlo pero si mucho el MsFlexGrid y cuando desea eliminar filas con un determinado contenido, tengo la costumbre de hacer el bucle a la inversa p sea, desde ListCount-1 hasta 0 y así no me tengo que complicar la vida comparando si o no debo restar para jugar con el For Next
Tope = listCount -1
For Bucle = Tope to 0 Step -1
' Si tiene la X eliminarlo simplemente
next
Tal vez la idea te sirva.
-
Vamos que simple... Funciono así...
Private Function Eliminar_Item_ListView(ListView As ListView)
On Error Resume Next
Dim i As Integer
With ListView
' -- Recorrer todos los items
For i = .ListItems.Count To 0 Step -1
If .ListItems.Item(i).ListSubItems(2).Text = "X" Then
' -- Si es igual eliminar
.ListItems.Remove .ListItems.Item(i).Index
End If
Next
End With
End Function
No recordaba para nada esto: For i = .ListItems.Count To 0 Step -1
Dios, a retomar los cuadernos...! ::)
Gracias