Les bases du langage
5. Les fonctions prédéfinies
5.4 Fonctions d'interface
La fonction InputBox
Nous allons à présent découvrir deux nouvelles fonctions, qui n'ont aucun équivalent dans les langages traditionnels (procéduraux), car elles sont directement liées au fait que VB soit un langage basé sur
La première de ces deux fonctions est celle qui nous permet de faire apparaître une petite boîte de saisie tout ce qu'il y a de plus ordinaire, comportant une zone dans laquelle l'utilisateur pourra entrer une
valeur :
Je le répète, il s'agit là d'une fonction, dont les deux arguments de type String correspondent respectivement à l'invite ("Quelle entreprise...") et au titre ("Question pour un champion") de la boîte de saisie. Cette fonction renverra toujours une valeur de type String. Pour obtenir le résultat ci-dessus, on aura
donc écrit un code du genre :
a = "Quelle entreprise a conçu Microsoft Word ?" b = "Question pour un champion"
Rep = Inputbox(a, b)
Ce code attendra que le bouton OK (ou Annuler) soit cliqué, et stockera alors le contenu de la zone de saisie dans la variable Rep.
Remarque triviale, mais on n'est jamais trop prudent
Il serait donc aberrant d'entrer sur une ligne, toute seule, InputBox(a, b).
Cela reviendrait à traiter InputBox comme s'il s'agissait d'une instruction, alors qu'elle est, je le répète, une fonction, c'est-à-dire une valeur.
La fonction MsgBox
La fonction jumelle d'Inputbox, vouée à un usage un peu différent, est la fonction MsgBox. Elle déclenche l'apparition d'une boîte dépourvue de zone de saisie, mais dotée d'un jeu de boutons, et
éventuellement d'une illustration standard, du genre :
Là, on retrouve comme arguments l'invite ("Missile thermonucléaire...") et le titre ("Dernière vérification"). Mais entre ces deux paramètres, on doit fournir un argument d'un genre un peu spécial, sur
Le rôle de cet argument est double : il doit indiquer d'une part quel est le jeu de boutons souhaité, parmi les six disponibles ("Abandonner, Réessayer, Ignorer", "OK", "OK, Annuler", "Réessayer, Annuler",
"Oui, Non", "Oui, Non, Annuler"). Il doit également stipuler quelle illustration viendra éventuellement égayer votre boîte à messages, parmi les quatre possibles (Critical, Exclamation, Information, Question). Il est possible d'activer de surcroît quelques autres options, mais nous les laisserons de côté provisoirement. Ce
qui compte, c'est de comprendre comment ça marche.
En fait, l'argument attendu est de type Integer. Et chacune des possibilités de boutons et d'illustrations énumérées ci-dessus est associée par VB à une valeur entière. Dès lors, pour choisir tel jeu de bouton, il suffit d'entrer comme argument l'entier correspondant. Et pour associer tel jeu de bouton à telle illustration,
il suffira d'additionner les deux valeurs correspondantes. Miracle de l'intelligence petitmollienne, les valeurs ont précisément été choisies pour que toutes les additions donnent des résultats différents, et que la
machine puisse s'y retrouver sans ambiguïté possible.
Là où ça devient intéressant, c'est qu'on n'est pas obligé de spécifier l'argument sous la forme d'un nombre entier, laborieux à aller chercher pour celui qui écrit le programme, et encore plus laborieux à comprendre pour celui qui le relit. Cet entier peut donc être écrit sous une forme, celle d'une constante VB.
Définition simple :
Une constante VB est un mot-clé du langage, qui pour le compilateur, équivaut à un entier donné.
Définition savante :
Une constante VB est en réalité le membre d'une énumération.
Vous ne comprenez rien à cette définition ? C'est normal. Je l'ai mise là juste pour pouvoir vous dire dans quelques chapitres que je vous en avais déjà parlé.
Oui, je ne suis qu'un ignoble manipulateur.
Toujours est-il que la boîte de message figurant plus haut peut ainsi être programmée comme :
a = "Missile thermonucléaire activé. Voulez-vous continuer ?" b = "Dernière vérification"
rep = MsgBox(a, 3 + 32, b)
Ce qui n'est pas très explicite. Mais on peut tout aussi bien - et même mieux - écrire : a = "Missile thermonucléaire activé. Voulez-vous continuer ?"
b = "Dernière vérification"
rep = MsgBox(a, MsgBoxStyle.YesNoCancel + MsgBoxStyle.Question, b)
Histoire de faire simple, les types de chez Bill ont en fait donné deux séries de noms différents aux mêmes constantes. En fait, pour désigner exactement les mêmes valeurs Integer, on dispose :
d'une part des noms généraux du Framework .NET (ce sont les membres des énumérations) d'autre part des noms propres à VB (ce sont les constantes VB).
a = "Missile thermonucléaire activé. Voulez-vous continuer ?" b = "Dernière vérification"
rep = MsgBox(a, vbYesNoCancel + vbQuestion, b)
Passons maintenant au résultat de la fonction Msgbox. Quelle valeur celle-ci renvoie-t-elle ? Le résultat d'une fonction Msgbox, c'est le bouton sur lequel l'utilisateur a appuyé pour la faire disparaître. Et c'est
ce résultat qui sera stocké dans la variable Rep de mes exemples.
Sous quelle forme ce résultat s'exprime-t-il ? Eh bien toujours pareil, sous la triple forme d'un entier correspondant au bouton en question, d'une constante VB correspondant à cet entier, ou du membre de
l'énumération .NET correspondant tout à la fois à l'integer et à la constante VB.
Un petit coup d'oeil sur l'aide nous apprend ainsi que le clic sur le bouton OK correspond au renvoi par
MsgBox de la valeur 1, autrement dit du membre MsgBoxResult.OK ou de la constante VB vbOK. De même, le clic sur le bouton Annuler correspond au renvoi par MsgBox de la valeur 2, autrement dit du membre
MsgboxResult.Cancel ou de la constante VB vbCancel. Et voilà le travail.