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

Contact : cgruchet@hotmail.com - Tél: 06 22 82 90 55
Microsoft Certified Professional
Cours : Visual-Basic

Les contrôles :

Zones de listes

Claude Gruchet

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.