Rappel : Ce cours est enseigné dans la
spécialité PISE du Master MECI (Université Paris 7)
par Christophe Darmangeat

Partie 2
Les Premiers Contrôles
1. Le contrôle Form
Le contrôle de base, absolument universel, en Visual Basic est la feuille, ou formulaire, en anglais, Form. Cet objet est incontournable ; on ne peut créer et utiliser d’autres objets que si ceux-ci font partie d’une Form. Il y a certes moyen de rendre celle-ci invisible, pour qu’on ne voie que les objets posés dessus ; mais même invisible, elle doit nécessairement exister.
A l’ouverture de Visual Basic, on vous propose d’ailleurs par défaut un objet Form. Ce n’est pas pour rien.

Nous allons examiner d’emblée deux propriétés dont il est essentiel de comprendre la signification. Ces propriétés existent pour l’objet Form, mais elles existent aussi pour tous les autres objets Visual Basic. Ce que vous allez apprendre maintenant est donc d’une utilité universelle.
A tout Form en particulier, et à tout contrôle en général, sont donc associées les propriétés :
  • Name : il s’agit du nom de l’objet tel qu’il est géré par l’application. Cela correspond en quelque sorte à un nom de variable (sauf que ce n’est pas une variable, c’est un objet !). Par défaut, VB baptise tous les objets que vous créez de très jolis noms génériques, comme Form1, Form2, Form3, Text1, Text2, Text3, etc. Ainsi, dès que l’application devient importante, il est très vivement conseillé de rebaptiser les objets dès leur création, afin de leur donner des noms plus évocateurs. Parce que sinon, dès que le nombre d’objets va grossir, vous serez complètement paumés, et vous ne saurez plus qui est quoi.
  • Caption : il s’agit du texte associé à l’objet sur l’écran. Cette Caption est donc très utile pour professionnaliser une application, lui donner un look fini, mais ne joue aucun rôle dans la désignation de l’objet par l’application. C’est un rôle purement décoratif !
    Dans le code, on ne désigne donc jamais un objet par sa Caption, mais par son Name. Dans le cas de la Form, par exemple, la propriété Caption désigne le texte qui vient s’écrire dans la barre de titre.
    Et je rappelle que dans le cas particulier d’une Form, outre ces deux « noms », il y a en plus le nom du fichier dans lequel elle sera sauvegardée. Cela fait donc trois « noms » pour un seul contrôle, noms qui chacun jouent un rôle différent ; Attention à ne pas se mélanger les pinceaux !
Il y a des tas d’autres propriétés intéressantes de Form. Je ne vais bien sûr pas toutes vous les infliger. Il y a une aide, après tout, il faut que cela serve. Je signale toutefois :
  • Modal : propriété qui gère le caractère « impératif » ou non de toute Form (on peut cliquer ou non en dehors de la form, sur une autre Form)
  • Style : propriété qui gère la tête générale de la Form (présence ou non du menu système, tête des bordures, etc.)
  • Visible : propriété booléenne qui gère, comme son nom l’indique, le caractère visible ou non de la Form (et partant, des autres contrôles qu’elle contient)
Rappel : procédures événementielles
Je rappelle qu’à chaque objet créé peuvent correspondre autant de procédures que d’événements possibles survenant sur cet objet. En pratique, il est rare que l’on doive prévoir tous les événements. Si un événement se produit pour un objet (ex : l’utilisateur clique dessus) et qu’aucune procédure n’est attachée à cet événement, c’est très simple : il ne se passe rien !
VB gère très simplement la création – ou la modification – d’une procédure liée à un objet. Lorsque l’objet est sélectionné, il suffit de faire un double-clic dessus (ou, c’est équivalent, d’appuyer sur F7). On se retrouve alors dans la fenêtre Code. Si elle n’existait pas encore, la procédure gérant l’événement le plus courant pour l’objet considéré vient d’être créée. Si elle existait déjà, cette manipulation vous amène sur elle pour modifications éventuelles.
La procédure ainsi créée, je le rappelle, se présente ainsi :
Private Sub NomObjet_Evenement()

End Sub
  • Private signifie que la procédure n’est utilisable que pour la Form considérée (et pas pour d’autres objets situés sur d’autres Form). Vous en conclurez que l’on peut aussi créer des procédures Public même si nous ne nous amuserons guère à cela dans le cadre de ce cours.
  • End Sub marque la fin de la procédure en question (mais pas la fin de l’application).
Vous remarquerez que l’événement retenu par VB comme étant le plus probable pour une Form est Load (chargement). Autrement dit, cette procédure contient tout ce que l’application doit faire au moment où la Form en question est chargée en mémoire vive.


2. Le CommandButton (Bouton de Commande)
Il s’agit du bouton type OK, Annuler, mais dont le texte apparent (en Anglais, Caption) et le rôle dans une application peuvent varier à l’infini. Je ne vous étonnerai pas en vous disant que l’action que VB considère comme étant la plus commune pour les boutons de commande est Click (en Français, clic, note du traducteur, 20/20 au TOEIC).
Quelques propriétés intéressantes de la classe CommandButton :
  • Name : bien sûr !
  • Caption : évidemment…
  • Visible : ce qui ne surprend pas.
  • Enabled : cette propriété, booléenne, est comme on le verra très loin d’être l’apanage des seuls boutons de commande. Elle permet (valeur True) à un contrôle d’être actif, c’est-à-dire de pouvoir recevoir des événements, et donc de déclencher des procédures. Inversement, elle interdit (valeur False) à un contrôle de recevoir quelque événement que ce soit de la part de l’utilisateur. Dans ce cas, le contrôle apparaît grisé à l’écran. Ca vous rappelle des choses déjà vécues sous Windows ? Normal, c’est absolument fait exprès.
  • Style : si cette propriété possède comme valeur Graphical, il devient alors possible d’ajouter une image sur le bouton, ou d'en modifier la couleur. Dans le cas contraire (valeur Standard, par défaut), le bouton conserve l’aspect par défaut des boutons de Windows, à savoir un gris souris du meilleur goût.
Il est maintenant grand temps pour vous de passer aux premières joies de la programmation VB...
Voici donc vos premiers exercices VB. Pour chacun d'eux, vous devez commencer par télécharger l'exécutable. C'est le modèle que vous devez copier au plus près. N'hésitez pas à passer un peu de temps à bien comprendre ce qu'il fait, avant de vous ruer sur votre clavier !
Pour l'Application Micro, il y a deux manières bien différentes de programmer ce que l'on voit à l'écran. L'une consiste à préparer deux objets, puis en cacher un et à faire apparaître l'autre. L'autre technique emploie un seul objet, dont elle modifie les caractéristiques. Les deux sources proposées correspondent à ces deux choix de programmation.
Nom de l'exercice
Exécutable
Sources
A titre de commencement
Application micro
Permutatruc



3. Le Label (Etiquette)
Un Label est un contrôle "inerte", qui sert à afficher un texte sur une Form. Son aspect peut varier quelque peu selon les styles adoptés :

Ce qu’il faut comprendre avec les Labels, c’est qu’ils ne peuvent jamais servir à effectuer une saisie par l’utilisateur.
Pour le reste, les propriétés notables d’un contrôle Label sont :
  • Name : bien sûr
  • Caption : évidemment
  • Alignment : qui règle l’alignement du texte (gauche, centré, droite)
  • BorderStyle : qui désigne le type de bordure
Quant aux événements possibles sur un contrôle Label, disons en première approche qu’ils incluent le Click déjà vu, plus d’autres événements dont nous ne parlerons que plus loin.


4. La Zone de Texte (TextBox)
Ces zones (de la classe "TextBox" pour VB) peuvent servir à saisir une information. Il s’agit du seul contrôle permettant une saisie au clavier par l’utilisateur. En Visual Basic, il n’y a donc plus à proprement parler d’instruction Lire. A la place de cette instruction, on est contraint de passer par de telles zones.

La seule chose vraiment importante à savoir est que toute information contenue dans une zone de texte est obligatoirement de type… texte ! (autrement dit, cela inclut le cas où il s’agit d’un nombre). Conclusion, l’emploi de fonctions de conversion s’avèrera fréquemment indispensable
4.1 Propriétés :
La propriété essentielle d'une Zone de Texte est… Text. C’est la propriété qui désigne son contenu. Comme toute propriété, elle va pouvoir être utilisée tant en lecture qu’en écriture.
Supposons ainsi que nous avons défini une zone de classe TextBox, que nous avons appelée "NomDeFamille". Pour mettre cette zone à blanc à l’affichage de la feuille de dialogue, on écrira tout simplement :
Nomdefamille.Text = ""
Une fois que l’utilisateur aura entré quelque chose dans cette zone, si l’on veut récupérer ce quelque chose dans la variable Toto, on passera l’instruction suivante :
Toto = Nomdefamille.Text
Autres propriétés intéressantes des zones de texte :
  • Multiline : autorise ou non l’écriture sur plusieurs lignes
  • Scrollbars : fait figurer dans la TextBox une barre de défilement horizontale ou verticale (ou les deux)
  • PasswordChar : crypte le texte entré par le caractère stipulé (généralement, on choisit le caractère *)
  • MaxLength  : limite le nombre de caractères qu’il est possible de saisir dans la zone de texte.
On retrouve bien entendu à propos des zones de texte les événements déjà aperçus à propos des contrôles précédents, comme le Click. Toutefois, un nouvel événement fait son apparition : il s'agit de Change, qui survient chaque fois que le contenu de la zone de texte est modifié. Cet événement peut donc survenir :
  • soit parce que l'utilisateur a frappé un texte dans la zone - et dans ce cas, il provoque un événement Change à chaque nouveau caractère frappé
  • soit parce qu'une ligne de code provoque une modification de la propriété Text de cette zone.
Il faut donc bien réfléchir avant d'écrire une procédure liée à une zone de texte : quand veut-on qu'elle se déclenche ? Et même, souhaite-t-on réellement déclencher une procédure à chaque fois que quelque chose est modifié dans cette zone ?
Et maintenant, encore une petite rasade d'exercices :

Nom de l'exercice
Exécutable
Sources
Concaténateur
Calculette Balaise
Calculette Balaise Bis