Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117

    [VB6] Cancellazione riga in una Listview

    Salve a tutti,
    ho un problema con il Visual Basic 6 per quanto riguarda la Listview.

    Come e' risaputo per eliminare una riga in una Listview si adopera il comando:

    Lista.ListItems.Remove i

    con i la riga che si vuole eliminare.

    A questo punto io pero' devo cancellare dalla lista la riga in cui compare come primo elemento colonna la parola "pippo"; io ovviamente dovrei scandire tutta la lista e nel momento in cui trovo "pippo" devo cancellare la riga.

    Si potrebbe pensare di implementare una funzione del genere:

    For i = 1 To Lista.ListItems.Count
    If Lista.ListItems.Item(i) = "pippo" Then
    Lista.ListItems.Remove i
    End If
    Next

    pero' questa da errore perche' giustamente se io cancello una riga, Lista.ListItems.Count se prima era 10 ora diventa 9 e a fine ciclo for il VB va errore perche' Lista.ListItems.Item(10) non esiste piu' dato che l'ho cancellato.

    Esiste una funzione che non vada in errore senza usare On Error Next Resume?

    P.S. io ho provato anche in questo modo:

    Dim Elementi

    Elementi = Lista.ListItems.Count

    For i = 1 To Elementi
    If Lista.ListItems.Item(i) = "pippo" Then
    Lista.ListItems.Remove i
    Elementi = Elementi -1
    End If
    Next

    Ma non va bene lo stesso...

    ..grazie in anticipo per la risposta
    Next

  2. #2
    Il primo elemento non è l'elemento 1, ma 0

    for i=0 to Lista.ListItems.Count - 1


  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Elimina al contrario e tieni presente che iniziano da zero

    codice:
    For i = Lista.ListItems.Count-1 To 0 step -1
     If Lista.ListItems.Item(i) = "pippo" Then 
       Lista.ListItems.Remove i 
      End If 
    Next

  4. #4
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, ora non posso provare..ma se non sbaglio la listView l'indice della item inizia da 1 e non da zero!
    Jupy

  5. #5
    Originariamente inviato da Jupy64
    Ciao, ora non posso provare..ma se non sbaglio la listView l'indice della item inizia da 1 e non da zero!
    azz... listView... credo che tu abbia ragione

    comunque quando trovi "pippo" non puoi far incrementare il contatore del ciclo for, altrimenti se ce ne sono 2 di fila ti perdi il secondo

  6. #6
    ha ragione oregon poi basta che fai finire a 1! no?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Grazie a tutti cmq la risposta corretta e' quella di oregon, semplice ed efficace (testato e funzionante).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.