GB3- Passer une liste d'une Form à l'autre

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

 lv

Bonsoir,

Aujourd'hui  nous allons passer une liste complète d'une form à l'autre en une ligne de code.

1- Problème posé


Dans mon exemple j'ai deux Form avec deux  ListView, et je souhaite en cliquant sur un bouton passer l'intégralité de la liste de la première Form dans la deuxième Form1.

2- Création de l'interface


Dans la Form principale, créons une ListView et deux boutons, le premier bouton servant à quitter notre application, le deuxième à envoyer la liste.
Créons aussi une ListBox que nous nommerons lv (lv pour listview)
Remplissons cette ListView avec 31 lignes comme ceci :

 

Public Sub Form_Open()
Dim a As Integer
For a = 0 To 30
   lv.Add("text: " & a, "text: " & a)
Next
End



Dans l'évènement clic du premier bouton qui sert à fermer l'exemple écrivons:

 

Public Sub bquit_Click()
Me.Close()
End


Dans l'évènement clic du deuxième bouton voici le code :

3- Envoi des données

 

Public Sub bsend_Click()
Form1.Rlist(lv.keys) 'Envoi toutes les clefs contenues dans lv sous forme de string[]
End


4- Réception des données

Maintenant dans la deuxième Form, nous allons réceptionner cette liste de string de cette façon:
Créons une méthode publique (c'est à dire visible par les autres Form) de type Sub (qui ne renverra rien) dont le nom est Rlist (pour le diminutif de Réceptionne la liste), et en paramètre nous réceptionnons une liste nommée mylist et de type String[]

Une boucle For Next pour récupérer le contenu de la liste ainsi réceptionnée et le tour est joué comme ceci :

Public Sub Rlist(mylist As String[])
lv.Clear()
Me.Show()
For Each sKey As String In mylist
   lv.Add(sKey, sKey)
Next
End



Vous l'aurez compris, pour chaque clef dans ma liste Mylist,
ajoute à la liste lv les clefs.

Exécutons notre programme et admirons le résultat.
CQFD !

Voici le code de la Fmain et Form1 :

 

'****************** FMAIN ******************
Public Sub Form_Open()
Dim a As Integer
For a = 0 To 30
   lv.Add("text: " & a, "text: " & a)
Next
End

Public Sub bquit_Click()
Me.Close()
End

Public Sub bsend_Click()
Form1.Rlist(lv.keys)
End

'******************** FORM1 ********************
Public Sub Form_Open()
Me.Center()
End


Public Sub Rlist(mylist As String[])
lv.Clear()
Me.Show()
For Each sKey As String In mylist
   lv.Add(sKey, sKey)
Next
End
 


 Voilà pour aujourd'hui.

wink