Les contrôles "zone de liste" (L²istBox)
et "zone de liste modifiable" (ComboBox)
sont parmi les plus utilisés dans le monde des interfaces utilisateur sous
Windows. Ils sont souvent (mais pas toujours) utilisés pour afficher le contenu
d'enregistrements d'une base de données.
Un contrôle ListBox permet la sélection d'un ou plusieurs éléments
dans une liste mono colonne. Ce contrôle, une fois rempli, a l'aspect suivant :

A partir du moment où le nombre d'éléments de la liste
dépasse sa hauteur, une barre de défilement (ScrollBar) apparaît
automatiquement à droite de la zone de liste.
Un contrôle ComboBox représente l'union d'une zone de
texte et d'une zone de liste. Il permet, tout comme le précédent, la
sélection d'un élément dans une liste mais permet aussi la saisie d'une
valeur qui peut être présente ou pas dans la liste (propriété LimitToList). La zone de liste d'une
ComboBox n'est pas apparente par défaut. Il faut que l'utilisateur demande son
affichage en cliquant sur le petit triangle noir à droite du contrôle :

Mise en oeuvre de ListBox
Propriétés indispensables de ListBox
| Propriété |
Utilisation |
| CausesValidation |
Très importante, cette propriété indique
si l'événement Validate du contrôle précédent sera déclenché
lorsque notre TextBox sera activée. |
| DataField |
Indique le nom du champ si le
contrôle est lié à un contrôle Data. |
| DataSource |
Nom d'un éventuel contrôle Data,
source de données à afficher dans le contrôle. (utilisé avant de
renseigner DataField) |
| Enabled |
Permet de désactiver (valeur False) le
contrôle qui sera, alors, inaccessible à l'utilisateur et
s'affichera en grisé. |
| Font |
Détermine la police de caractères
utilisée, sa taille, son style (gras, souligné ...). VB fournit une
boite de dialogue pour vous aider à choisir les valeurs voulues. Le
dialogue est accessible en cliquant sur le petit bouton avec les 3 points
à droite de la zone de valeur de la propriété dans la fenêtre
"propriétés". |
| ItemData( int ) |
Tableau de "long" qui
permet de stocker (en parallèle au tableau List) les codes (par
exemple les champs "NuméroAuto" d'une base Access)
correspondant aux éléments affichées dans la liste. |
| List( int ) |
Tableau d'éléments "String" contenant
les chaînes affichés dans la liste |
| ListCount |
Nombre d'éléments de la liste |
| ListIndex |
Indice de l'élément sélectionné,
la première ligne a l'indice 0. Une valeur de -1 indique qu'aucune ligne
n'est sélectionnée. |
| Name |
Selon la convention Microsoft, un nom ListBox
doit être préfixé par "lst". Ex : lstCli pour une
liste de clients. |
| TabIndex |
Position du contrôle dans l'ordre
de tabulation du formulaire. C'est le contrôle ayant la valeur de
TabIndex à 0 qui sera le contrôle actif à la première activation du
formulaire (sauf code source activant un autre contrôle). |
| ToolTipText |
Permet d'afficher un texte d'aide (bulle
jaune) lors du survol du contrôle par la souris. |
| Visible |
Permet de cacher (False) ou d'afficher (True)
le contrôle. |
Méthodes "basiques" de ListBox
| Méthode |
Utilisation |
| AddItem |
Ajoute un élément à la liste.
Retourne l'indice de l'item ajouté dans la propriété "NewIndex". |
| Clear |
Permet de vider la liste. |
| Move |
Permet de déplacer le contrôle sur le
formulaire. Les paramètres de cette méthode sont position X, position Y,
hauteur du contrôle, largeur du contrôle (par défaut en Twips).
NB
: Le Twip est une unité de mesure Microsoft, plus petite qu'un
pixel. On peur obtenir le nombre de twips pat pixel pour une résolution
donnée en utilisant la fonction TwipsPerPixel() (consulter la
documentation VB à ce sujet). |
| Refresh |
Force le rafraîchissement complet à l'écran
du contrôle. |
| SetFocus |
Donne le "focus" au contrôle.
Microsoft définit le "focus" comme l'état de réceptivité
aux clics de souris et aux saisies au clavier.
En fait, pour l'utilisateur cela revient à mettre le
curseur dans le contrôle. |
Événements de ListBox
| Événement |
Utilisation |
|
Click
|
Se produit lorsque l'utilisateur sélectionne une ligne de la liste
|
| GotFocus |
Se produit lorsque le curseur
"arrive" dans le contrôle (juste après). Microsoft
définit le "focus" comme l'état de réceptivité aux clics
de souris et aux saisies au clavier. |
| KeyDown(keycode As Integer,
shift As Integer) |
Se produit lorsque l'utilisateur
enfonce une touche. Le code machine de la touche est contenu dans
l'argument KeyCode (par exemple vbKeyF1). A chaque touche
est associée une constante. |
| KeyPress(KeyAscii As Integer) |
Permet de tester quelle touche a
été pressée, l'argument KeyAscii contient le code ASCII du caractère.
Pour "tuer" le caractère, il suffit de mettre Key_Ascii à 0.
NB :Ne permet pas de tester les touches non
Ascii, par exemple, les touches de curseur, Ctrl, Alt .. etc ... ne sont
pas traitées par cet événement (voir KeyDown, KeyUp) |
| KeyUp(keycode As Integer,
shift As Integer) |
Se produit lorsque l'utilisateur
relâche une touche. Le code machine de la touche est contenu dans
l'argument KeyCode (par exemple vbKeyF1). A chaque touche
est associée une constante. |
| LostFocus |
Se produit juste après
que le contrôle perde le focus. Microsoft définit le
"focus" comme l'état de réceptivité aux clics de souris et
aux saisies au clavier. |
| Scroll |
Se produit lorsque la propriété
"TopIndex" change de valeur (l'utilisateur fait défiler
la liste). |
| Validate(Cancel as boolean) |
Se produit avant que le
contrôle perde le focus. Permet de tester la validité du contenu
(propriété Text). On peut empêcher le curseur de quitter le
contrôle en mettant l'argument "Cancel" à True.
NB : Cet événement n'est déclenché que si
le contrôle "cible" du focus à la propriété CausesValidation
à True. |
Mise en oeuvre de ComboBox
Propriétés indispensables de ComboBox
| Propriété |
Utilisation |
| DataField |
Indique le nom du champ si le
contrôle est lié à un contrôle Data. |
| DataSource |
Nom d'un éventuel contrôle Data,
source de données à afficher dans le contrôle. (utilisé avant de
renseigner DataField) |
| Enabled |
Permet de désactiver (valeur False) le
contrôle qui sera, alors, inaccessible à l'utilisateur et
s'affichera en grisé. |
| Font |
Détermine la police de caractères
utilisée, sa taille, son style (gras, souligné ...). VB fournit une
boite de dialogue pour vous aider à choisir les valeurs voulues. Le
dialogue est accessible en cliquant sur le petit bouton avec les 3 points
à droite de la zone de valeur de la propriété dans la fenêtre
"propriétés". |
| ItemData( int ) |
Tableau de "long" qui
permet de stocker (en parallèle au tableau List) les codes (par
exemple les champs "NuméroAuto" d'une base Access)
correspondant aux éléments affichées dans la liste. |
| List( int ) |
Tableau d'éléments "String" contenant
les chaînes affichés dans la liste |
| ListCount |
Nombre d'éléments de la liste |
| ListIndex |
Indice de l'élément sélectionné,
la première ligne a l'indice 0. Une valeur de -1 indique qu'aucune ligne
n'est sélectionnée. |
| Name |
Selon la convention Microsoft, un nom ComboBox
doit être préfixé par "cbo". Ex :
cboCli pour une liste de sélection de clients. |
| TabIndex |
Position du contrôle dans l'ordre
de tabulation du formulaire. C'est le contrôle ayant la valeur de
TabIndex à 0 qui sera le contrôle actif à la première activation du
formulaire (sauf code source activant un autre contrôle). |
| Text |
C'est la propriété par défaut,
représente le contenu de la partir zone de texte (String) de la ComboBox. |
| ToolTipText |
Permet d'afficher un texte d'aide (bulle
jaune) lors du survol du contrôle par la souris. |
| TopIndex |
Indique l'indice de la ligne affichée
en haut de la liste (lié à l'événement Scroll) |
| Visible |
Permet de cacher (False) ou d'afficher (True)
le contrôle. |
Méthodes "basiques" de ComboBox
| Méthode |
Utilisation |
| AddItem |
Ajoute un élément à la liste |
| Clear |
Permet de vider la liste. |
| Move |
Permet de déplacer le contrôle sur le
formulaire. Les paramètres de cette méthode sont position X, position Y,
hauteur du contrôle, largeur du contrôle (par défaut en Twips).
NB
: Le Twip est une unité de mesure Microsoft, plus petite qu'un
pixel. On peur obtenir le nombre de twips pat pixel pour une résolution
donnée en utilisant la fonction TwipsPerPixel() (consulter la
documentation VB à ce sujet). |
| Refresh |
Force le rafraîchissement complet à l'écran
du contrôle. |
| SetFocus |
Donne le "focus" au contrôle.
Microsoft définit le "focus" comme l'état de réceptivité
aux clics de souris et aux saisies au clavier.
En fait, pour l'utilisateur cela revient à mettre le
curseur dans le contrôle. |
Événements de ComboBox
| Événement |
Utilisation |
| Change |
Se produit si le contenu du
contrôle
change. C'est le cas si votre code
source modifie le contenu de la propriété Text de la TextBox ou si,
le contrôle étant lié à un contrôle Data,
les données du jeu d'enregistrements sont modifiées. |
| Click |
Se produit lorsque l'utilisateur
sélectionne une ligne de la liste |
| GotFocus |
Se produit lorsque le curseur
"arrive" dans le contrôle (juste après). Microsoft
définit le "focus" comme l'état de réceptivité aux clics
de souris et aux saisies au clavier. |
| KeyDown(keycode As Integer,
shift As Integer) |
Se produit lorsque l'utilisateur
enfonce une touche. Le code machine de la touche est contenu dans
l'argument KeyCode (par exemple vbKeyF1). A chaque touche
est associée une constante. |
| KeyPress(KeyAscii As Integer) |
Permet de tester quelle touche a
été pressée, l'argument KeyAscii contient le code ASCII du caractère.
Pour "tuer" le caractère, il suffit de mettre Key_Ascii à 0.
NB :Ne permet pas de tester les touches non
Ascii, par exemple, les touches de curseur, Ctrl, Alt .. etc ... ne sont
pas traitées par cet événement (voir KeyDown, KeyUp) |
| KeyUp(keycode As Integer,
shift As Integer) |
Se produit lorsque l'utilisateur
relâche une touche. Le code machine de la touche est contenu dans
l'argument KeyCode (par exemple vbKeyF1). A chaque touche
est associée une constante. |
| LostFocus |
Se produit juste après
que le contrôle perde le focus. Microsoft définit le
"focus" comme l'état de réceptivité aux clics de souris et
aux saisies au clavier. |
| Scroll |
Se produit lorsque la propriété
"TopIndex" change de valeur (l'utilisateur fait défiler
la liste). |
| Validate(Cancel as boolean) |
Se produit avant que le
contrôle perde le focus. Permet de tester la validité du contenu
(propriété Text). On peut empêcher le curseur de quitter le
contrôle en mettant l'argument "Cancel" à True.
NB : Cet événement n'est déclenché que si
le contrôle "cible" du focus à la propriété CausesValidation
à True. |
Pour poursuivre ...
Rien ne remplace la pratique ... Pour bien comprendre comment utiliser les
contrôles de listes, nous vous proposons deux TDs utilisant les contrôles ListBox :
-
Une mise en pratique simple pour une liste fixe d'éléments
(jours de la semaine).
- L'utilisation d'une ListBox pour afficher un champ de base de
données.
Ce deuxième TD est accessible via la page de cours sur la bibliothèque DAO.
|