• Aucun résultat trouvé

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.