deux contrôles de listes
Les listes classiques dans Windows peuvent posséder ou non deux caractéristiques.
Elles peuvent être modifiables : c’est-à-dire que l’utilisateur a la possibilité d’entrer un élément qui ne figure pas au départ dans la liste. Cette caractéristique concerne donc les données de la liste proprement dites.
Elles peuvent être déroulantes : c’est-à-dire qu’on ne voit qu’un seul élément de la liste à la fois, et qu’il faut cliquer sur la flèche du côté pour "déplier" la liste. Cette caractéristique joue donc uniquement sur l’aspect de la liste, et aucunement sur la manière dont les données sont gérées.
Une liste peut donc prendre quatre têtes, selon qu’elle est modifiable ou non, déroulante ou non ("chez les papous, y a les papous à poux et les papous pas à poux, etc.")
VB fournit deux contrôles de liste :
une liste dite simple : contrôle ListBox
une liste dite modifiable : contrôle ComboBox
Le gag (ce Bill Gates, quand même, quel rigolo), c’est qu’en réalité, la liste dite modifiable est aussi une liste déroulante… Alors, pour résumer la situation, voici un petit récapitulatif de ce qu’il faut utiliser :
LISTE Non déroulante Déroulante
Non modifiable ListBox ComboBox
Style = 2
Modifiable ComboBox
Style = 1 ComboBox
Style = 0 (défaut)
Propriétés indispensables :
ListIndex : renvoie ou définit l’indice de l’élément actuellement sélectionné. En fait, en interne, VB gère les listes un peu à la manière des tableaux. Il attribue donc à chaque élément d’une liste un indice, cet indice commençant toujours à zéro. A noter que si aucun élément n'est sélectionné dans la liste, la propriété Listindex vaut -1.
List : Savoir quel est l’indice de l’élément sélectionné dans une liste, c’est bien. Mais savoir à quel texte correspond cet indice, c’est mieux ! Cette propriété renvoie en clair (sous forme de texte) un élément d’une liste en fonction de son indice. Il s’agit donc, chose assez rare, d’une propriété qui nécessite un argument (le numéro d’indice).
Pour récupérer sous forme de texte l’élément actuellement sélectionné dans la liste appelée Produits, on écrira donc le code suivant :
NuméroProduit = Produits.ListIndex
NomProduit = Produits.List(NuméroProduit)
MsgBox "Vous avez choisi le produit : " & NomProduit
Ou plus directement :
NomProduit = Produits.List(Produits.ListIndex)
MsgBox "Vous avez choisi le produit : " & NomProduit
Toutefois, il faut noter que les contrôles ComboBox nous simplifient grandement la vie, puisqu'à la différence des ListBox, ils nous proposent directement une propriété Text. Ainsi, si Produits est un contrôle ComboBox, et uniquement dans ce cas, on pourra écrire :
NomProduit = Produits.Text
MsgBox "Vous avez choisi le produit : " & NomProduit
Autres propriétés intéressantes :
ListCount, qui renvoie le nombre d’éléments d’une liste (propriété numérique)
Multiselect, qui permet la sélection multiple (propriété booléenne)
Sorted, qui trie automatiquement les éléments d’une liste (propriété booléenne)
Méthodes à connaître
Nous découvrons avec les contrôles ListBox et ComboBox des méthodes qu'il est indispensable de connaître afin de gérer des objets de type liste :
AddItem Chaîne : ajoute l'élément Chaîne à une liste (un argument supplémentaire, facultatif, permet éventuellement de spécifier à quel indice l'élément doit être inséré).
RemoveItem (indice) : supprime de la liste l'élément possédant l'indice spécifié.
Clear : efface tous les éléments d’une liste
Comme à l'accoutumée, voilà deux petits exercices pour se mettre tout cela en tête.
Nom de l'exercice Exécutable Sources
Primeurs
Listes Baladeuses
3.2 Trois autres contrôles pour des usages spéciaux
Il n'est pas rare que dans une application, on doive permettre à l'utilisateur de naviguer dans le disque dur, les répertoires, les fichiers, etc. (comme dans la commande Fichier – Ouvrir de tout logiciel).
Pour réaliser cela, on va avoir recours à trois contrôles supplémentaires, spécialisés, dont le rôle est de reproduire des outils familiers sous Windows :
DriveListBox : qui fournit automatiquement la liste des lecteurs logiques disponibles sur la machine où tourne l'application.
DirListBox qui fournit automatiquement la liste des répertoires contenus dans une unité donnée
FileListBox qui fournit automatiquement la liste des fichiers contenus dans un répertoire donné.
Illustration :
La présence de ces contrôles soulage votre tâche, mais ne vous épargne toutefois pas totalement d’écrire un chouïa de code, afin de les faire fonctionner ensemble. Ces trois objets étant des cas particuliers de contrôle liste, s’y appliquent éventuellement List, Listcount et Listindex.
Mais pour gérer la mise à jour de ces contrôles les uns en fonction des autres, les propriétés suivantes sont indispensables (et suffisantes) :
Drive : qui renvoie ou définit l'unité logique actuellement en vigueur dans un contrôle DriveListBox
Path : qui renvoie ou définit le chemin actuellement en vigueur dans un contrôle DirListBox ou dans un contrôle FileListBox
Filename : qui renvoie ou définit le fichier actuellement sélectionné dans un contrôle FileListBox.
Allez, un peu de pratique n'a jamais fait de mal à personne :