Autore Topic: [RISOLTO]Problemi con la rimozione in una listview  (Letto 612 volte)

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
[RISOLTO]Problemi con la rimozione in una listview
« il: 21 Marzo 2021, 12:31:42 »
Ciao, a tutti mi sto cimentando con la creazione di un programma con Gambas (uso la 3.5.12) e grazie a molti post letti qui sul forum ho risolto diversi problemi.

Ora però ho un problema di cui non riesco a venire a capo.

Uso una listview per selezionare ed inviare degli item ad una label mediante la pressione di un pulsante.
Il problema si presenta se dopo il primo utilizzo del pulsante seleziono altri item e lo ripremo per aggiungerli alla label, il programma mi segnala che gli item non esistono.
Penso che durante la creazione della listview ad ogni voce venga assegnato in item e conservi questo anche se le posizioni intermedie vengono eliminate. Di fatto l'item dopo il primo utilizzo non corrisponde più alla posizione visualizzata correntemente ed il listview.count è sempre quello iniziale con tutti gli item  anche se alcuni sono stati eliminati.
Non so se esiste un comando per fare riattribuire gli item...

Di seguitoil codice che utilizzo:

Codice: [Seleziona]
' Gambas class file


Public Sub Form_Open()

  ListView1.Add("1", "Pippo")
  ListView1.Add("2", "Pluto")
  ListView1.Add("3", "Paperino")
  ListView1.Add("4", "Gastone")
  ListView1.Add("5", "Qui")
  ListView1.Add("6", "Quo")
  ListView1.Add("7", "Qua")

End



Public Sub Button1_Click()
   
     Dim a As Integer
   
     For a = 1 To ListView1.Count
     If ListView1[a].Selected = True Then
     Label1.text = Label1.text & ListView1[a].Text & " "
     ListView1[a].Selected = False
     ListView1.Remove(a)
     Endif
     Next


End


Grazie in anticipo.

A presto.
« Ultima modifica: 21 Marzo 2021, 14:57:08 da Gianluigi »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Problemi con la rimozione in una listview
« Risposta #1 il: 21 Marzo 2021, 13:00:12 »
Questo codice ti potrebbe andare bene?:

Codice: [Seleziona]
Public Sub Form_Open()

  ListView1.Add("Pippo", "Pippo")
  ListView1.Add("Pluto", "Pluto")
  ListView1.Add("Paperino", "Paperino")
  ListView1.Add("Gastone", "Gastone")
  ListView1.Add("Qui", "Qui")
  ListView1.Add("Quo", "Quo")
  ListView1.Add("Qua", "Qua")

End

Public Sub Button1_Click()

  Dim sCurrent As String = ListView1.Key

  If sCurrent Then
    Label1.text = Label1.text & sCurrent & " "
    ListView1.UnSelectAll
    ListView1.Remove(sCurrent)
  Endif

End

 :ciao:
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:Problemi con la rimozione in una listview
« Risposta #2 il: 21 Marzo 2021, 13:23:09 »
Grazie per la risposta, purtroppo non risolve il dilemma.

Mi son dimenticato di dire che la il modo della listview è multiple e con questo codice restituisce solo l'item dell'ultima selezione e non il testo.

Grazie comunque, mi hai mostrato un altro sistema di selezione.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Problemi con la rimozione in una listview
« Risposta #3 il: 21 Marzo 2021, 13:36:55 »
Ti basta cambiare il codice del button così:
Codice: [Seleziona]
  For Each s As String In ListView1.Selection
    Label1.text = Label1.text & s & " "
    ListView1.Remove(s)
  Next
  ListView1.UnSelectAll

nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Problemi con la rimozione in una listview
« Risposta #4 il: 21 Marzo 2021, 14:41:17 »
Ciao, a tutti mi sto cimentando con la creazione di un programma con Gambas (uso la 3.5.12) e grazie a molti post letti qui sul forum ho risolto diversi problemi.
...

Credo che 3.5.12 sia un refuso e che intendessi la 3.15.2 altrimenti per il button dovresti usare questo codice già in uso presso i Galli:

Codice: [Seleziona]
Public Sub Button1_Click()

  Dim s As String

  For Each s In ListView1.Selection
    Label1.text = Label1.text & s & " "
    ListView1.Remove(s)
  Next
  ListView1.UnSelectAll

End
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:Problemi con la rimozione in una listview [RISOLTO]
« Risposta #5 il: 21 Marzo 2021, 14:46:23 »
Si si è un refuso uso 3.15.2.

Ho risolto grazie al secondo codice modificandolo così:
Codice: [Seleziona]
For Each s As String In ListView1.Selection
    Label1.text = Label1.text & ListView1[s].text & " "
    ListView1.Remove(s)
  Next
  ListView1.UnSelectAll

Altrimenti mo restituisce solo il numero di item.

Grazie ancora.

A presto

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:Problemi con la rimozione in una listview[RISOLTO]
« Risposta #6 il: 21 Marzo 2021, 14:55:18 »
Se usi questo sistema:
Codice: [Seleziona]
ListView1.Add("1", "Pippo")

Ma sarebbe preferibile perché più facile da gestire in generale, usare quello che ti avevo suggerito io e al quale naturalmente mi riferivo nella risposta:
Codice: [Seleziona]
ListView1.Add("Pippo", "Pippo")

P.S. Questa volta l'ho corretto io la prossima volta scrivi [Risolto] davanti all'oggetto e non dietro perché nelle ricerche se l'oggetto è lungo non si vedrebbe.
« Ultima modifica: 21 Marzo 2021, 14:59:29 da Gianluigi »
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline astragalo

  • Gamberetto
  • *
  • Post: 37
    • Mostra profilo
Re:[RISOLTO]Problemi con la rimozione in una listview
« Risposta #7 il: 21 Marzo 2021, 16:04:31 »
A dirla tutta la prima parte del  codice  l'ho  usata solo per inserire gli item nella lista e spiegare  il mio problema. Nel programma li inserisco analizzando uno processo.

Comunque  grazie alla tua spiegazione credo di risolvere.

Quando sarà  finito e troverò  un posto dove mettere il sorgente metterò  un link sulla discussione.

Grazie ancora.

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.244
  • Tonno verde
    • Mostra profilo
Re:[RISOLTO]Problemi con la rimozione in una listview
« Risposta #8 il: 21 Marzo 2021, 16:34:03 »

Quando sarà  finito e troverò  un posto dove mettere il sorgente metterò  un link sulla discussione.


 :ok:  :D
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro