GB3- Ne pas dupliquer deux fois la même chaine dans une listview

Rédigé par spheris Aucun commentaire
Classé dans : apprentisssage, gambas 3, Listview, Tutoriel Mots clés : aucun

Bonjour,

Une petite astuce pour éviter de dupliquer deux fois la même ligne dans une listview.

1- Problème posé.

 

Soit la liste suivante:
 
 

 

$list = ["toto", "tata", "titi","tutu", "toto, "tata", "tata", "totuti", "tutu"]
 
 

Je souhaite insérer cette liste dans une listview sans dupliquer deux fois les mêmes chaines de caractères.

2- Solution trouvée

Il faut avant d'insérer la nouvelle chaine de caractères que je puisse tester l'existence de cette chaine dans la listview. c'est la méthode  MOVETO.

En effet, il suffit d'écrire dans une boucle :

 

Private $list As String[] = ["toto", "tata", "titi","tutu", "toto, "tata", "tata", "totuti", "tutu"]
Dim a As Integer
For a = 0 to (ListView1.Count-1)
If ListView1.MoveTo($list[a]) then
ListView1.Add(a,$list[a],Picture["icon:/16/text"])
Next


Expliquons ce code :

 

la méthode MOVETO renvoi un booléen , TRUE si la chaine n'existe pas, FALSE si la chaine existe.
Il suffit donc de poser la condition : Si la chaine n'existe pas alors on l'ajoute à la listview par la commande :

ListView1.Add(a,$list[a],Picture["icon:/16/text"])


Remarque :

Entre parenthèse après Add se trouve 3 arguments :
- a : Correspondant à la clef. Cette clef doit être de type String, là il y est mis un Integer et cela fonctionne curieusement (va comprendre Charles...)
- $list[a] : le nom de l'occurence de la chaine situé en position a.
- Picture["icon:/16/text"] : Une image de type picture (prise au hasard dans la bibliothèque gb.form pour notre exemple)

Merci pour votre attention.