logo UsualSoft   Skip Navigation Links
Accueil
Références
Formations
TutorielsExpand Tutoriels
Liens téléchargements

Contact : usualsoft@outlook.fr
Microsoft Certified Professional
Cours : Visual-Basic

TD : Contrôles listes

Claude Gruchet
Initiation TD2-P1

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,

Télécharger le projet

Prévu pour se décompacter dans "\PForms"

    suite du TD