Dans ce TD, nous allons apprendre à utiliser une
liste (contrôle ListBox) :
Nous allons remplir un contrôle
ListBox avec les noms des jours de la semaine en mémorisant, en parallèle, le
numéro du jour (utilisation d'un code correspondant à l'élément affiché
dans la liste).
Dans le module de code source de notre formulaire,
nous aurons une Sub RefreshListe() dont le travail sera de remplir la ListBox.
Pour commencer, vous allez créer un
nouveau projet
de type Exe standard que vous allez appeler PLists (Menu Projet
/ Propriétés de Projet1). Pour plus de clarté, créez un répertoire
(de même nom que le projet) qui sera dédié aux fichiers composant ce
projet. Vous pourrez, à la fin de ce TD, télécharger un
modèle du projet tel qu'il devrait être.
Nous allons, tout d'abord, donner un nom et un
titre au formulaire par défaut (Form1) que l'environnement Visual-basic a
créé pour nous. Cliquez sur le formulaire puis tapez sur F4 pour activer la
fenêtre "Propriétés". A la ligne "Name" (la
première) entrez "frmListe" puis, à la ligne "Caption"
entrez "Jours de la semaine".
Nous allons, maintenant, empêcher le redimensionnement de la
fenêtre de formulaire par l'utilisateur et faire disparaître le menu système
de la barre de titre. Notez que les icônes "Réduire" et
"Agrandir" disparaîtront automatiquement lorsque nous interdirons le
redimensionnement.
Pour cela, utilisez les valeurs de propriétés suivantes pour votre formulaire :
| Propriété |
Valeur |
| BorderStyle |
Choisir "3 - Fixed Dialog" dans
la liste |
| MaxButton |
Cette propriété, qui correspond à l'icône
"Agrandir" est automatiquement passée à false lors de la
modification de BorderStyle. |
| MinButton |
Cette propriété, qui correspond à l'icone
"Agrandir" est automatiquement passée à false lors de la
modification de BorderStyle. |
Nous garderons la croix permettant de fermer le formulaire, cela nous évitera
d'avoir à créer un bouton de fermeture (cette manipulation a été réalisée
dans le TD1, Formulaires et contrôles
).
Tout d'abord, ajoutez
1 contrôle "ListBox". Nous
nommerons cette liste "lstSemaine".
L'icône d'une ListBox, dans la boite à outils, est :
. Double-cliquez sur l'icône ou bien sélectionnez l'outil par un simple click
et tracez le contrôle grâce à votre souris.
Utilisez les valeurs de propriétés suivantes :
|
Propriété
|
Valeur
|
|
Name
|
lstSemaine
|
Pour obtenir un formulaire ayant cet aspect :
Appelez ensuite le module de code source lié au formulaire, par exemple en utilisant un
click droit sur le formulaire et en choisissant "Code" dans le menu
contextuel.
Saisissez, ensuite, le code de la procédure RefreshListe :
|
Private
Sub RefreshListe()
Me.lstSemaine.Clear '
Efface la liste
Me.lstSemaine.AddItem "Lundi"
Me.lstSemaine.ItemData( me.lstSemaine.NewIndex
) = 1
Me.lstSemaine.AddItem "Mardi"
Me.lstSemaine.ItemData( me.lstSemaine.NewIndex
) = 2
Me.lstSemaine.AddItem "Mercredi"
Me.lstSemaine.ItemData( me.lstSemaine.NewIndex
) = 3
Me.lstSemaine.AddItem "Jeudi"
Me.lstSemaine.ItemData( me.lstSemaine.NewIndex
) = 4
Me.lstSemaine.AddItem "Vendredi"
Me.lstSemaine.ItemData( me.lstSemaine.NewIndex
) = 5
Me.lstSemaine.AddItem "Samedi"
Me.lstSemaine.ItemData( me.lstSemaine.NewIndex
) = 6
Me.lstSemaine.AddItem "Dimanche"
Me.lstSemaine.ItemData( me.lstSemaine.NewIndex
) = 7
End Sub
|
Avoir écrit cette procédure ne suffit pas, il va maintenant
falloir la déclencher ! Sous windows, en programmation événementielle, les
déclencheurs sont les événements. Il ne nous reste donc qu'à sélectionner
quel événement nous allons utiliser.
Pour que la liste apparaisse dès l'apparition du formulaire à l'écran, nous allons
la remplir avant même que le formulaire soit visible : lors de la construction
de sa structure en mémoire. L'événement approprié sera l'événement "Load"
du formulaire ( Form_Load() ).
|
Private Sub Form_Load()
RefreshListe
End Sub
|
Vous pouvez, tout de suite, lancer le programme pour voir le résultat. La liste des
jours s'affiche, vous pouvez sélectionner un jour à l'aide de la souris ou des
touches de curseur.
Pour mieux étudier le fonctionnement de la liste, nous allons maintenant ajouter un
Label sous la liste dans lequel nous afficherons le numéro et le nom du jour
sélectionné grâce à un double-click.
L'icône d'un Label, dans la boite à outils, est :
. Double-cliquez sur l'icône ou bien sélectionnez l'outil par un simple click
et tracez le contrôle grâce à votre souris.
Utilisez les valeurs de propriétés suivantes :
| Propriété |
Valeur |
| Name |
lbl |
| Caption |
... |
Il ne vous reste plus qu'à saisir le code suivant (sélectionnez le contrôle
lstSemaine dans la ComboBox de gauche et l'événement DblClick dans celle de
droite :
|
Private Sub
lstSemaine_DblClick()
MsgBox "ligne sélectionnée : " & CStr(Me.lstSemaine.ListIndex)
Me.lbl.Caption = Me.lstSemaine.ItemData(Me.lstSemaine.ListIndex) & _
" - " & _
Me.lstSemaine.List(Me.lstSemaine.ListIndex)
End Sub
|
NB
: la ligne
Me.lstSemaine.List(Me.lstSemaine.ListIndex)
aurait
pu être remplacée par
Me.lstSemaine.Text
A l'exécution nous obtenons le résultat suivant :
et, après avoir fermé le message,