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:
' 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.
Questo codice ti potrebbe andare bene?:
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:
Ti basta cambiare il codice del button così:
For Each s As String In ListView1.Selection
Label1.text = Label1.text & s & " "
ListView1.Remove(s)
Next
ListView1.UnSelectAll
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:
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
Si si è un refuso uso 3.15.2.
Ho risolto grazie al secondo codice modificandolo così:
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
Se usi questo sistema:
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:
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.