Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: ssccaann43 en Abril 06, 2010, 02:29:46 pm

Título: Eliminar Registros "X" de un ListView
Publicado 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í...

Código: (vb) [Seleccionar]
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
Título: Re:Eliminar Registros "X" de un ListView
Publicado por: erbuson en Abril 06, 2010, 03:30:15 pm
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.

Título: Re:Eliminar Registros "X" de un ListView
Publicado por: ssccaann43 en Abril 06, 2010, 04:21:48 pm
Vamos que simple... Funciono así...

Código: (vb) [Seleccionar]
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