PopupMenu

Classe pour une sélection l'aide d'un menu déroulant.

Version: 1.1
Date: Le 6 août 1997
Rédaction: Jocelyn Houle
Direction: Jean Vaucher


Introduction

Les PopupMenus sont des fenêtres permettant de électionner parmi une liste d'éléments qui serait souvent trop encombrante pour la fenêtre actuelle. Un menu popup permet ainsi d'exploser la liste complètement lorsqu'on en a besoin, et de l'imploser par la suite.

 

Code

BEGIN
   EXTERNAL CLASS windowtools;

   INSPECT NEW MainWindow("Popup") DO BEGIN
      REF(JPHPopupMenu)  Popup;
      REF(Button)        Quit;
      
      SetSize(200, 100);
      SetBackground("gray77");
      Show;
      
      Popup :- JPHMakePopupMenu("/Avant/Pendant/Apres", "Pendant")
                 .PlaceCentered;

      Quit :- MakeButton("Ok").PlaceDownRight;
      Quit.Wait;
      OutLine("Choice: " & Popup.CurrentChoice);
   END;
END;

Après avoir défini la taille de la fenêtre, ainsi que le bouton Quit, nous avons intialisé le PopupMenu:

      Popup :- JPHMakePopupMenu("/Avant/Pendant/Apres", "Pendant")
                 .PlaceCentered;

où les éléments sont séparés par le caractère '/'. Le paramètre "Pendant" définit l'élément par défaut.

Popup.CurrentChoice nous donne la valeur de l'étiquette courante du PopupMenu (Avant, Pendant ou Apres dans l'exemple).


Informations sur les PopupMenus

La création d'un PopupMenu se fait à l'aide de la procédure suivante:
ref(PopupMenu) procedure MakePopupMenu(choices, default); text choices, default;
Crée un nouveau PopupMenu avec les valeurs spécifiées par la chaîne choices (voir le format de l'étiquette plus bas). De son côté, default spécifie l'étiquette de l'élément par défaut ("Pendant" dans l'exemple ci-haut).

On peut accéder au choix:
text procedure CurrentChoice;
Retourne l'élément sélectionné (Avant, Pendant ou Apres dans l'exemple).

Il existe une autre procédure qui pourrait être utile dans des cas particuliers:
procedure SetMenu(choices, default); text choices, default;
Redéfinit la liste des éléments normalement spécifiés lors de la création du PopupMenu. Les anciennes valeurs seront perdues.
Note: C'est ce qu'utilise MakePopupMenu pour définir les valeurs intiales.


Notes à propos du format des choix

Le tout premier caractère du paramètre Choices sert de délimiteur. Dans notre exemple, il s'agit du caractère '/', mais on aurait pu le remplacer par n'importe quel caractère. Ainsi, on aurait pu écrire:

   MakeMenu("#Avant#Pendant#Apres", "Pendant");
Ceci permet entre autres de permettre tous d'afficher tous les caractères qu'on veut, en autant qu'il y en ait un qu'on puisse untiliser comme délimiteur.

On peut aussi scinder un texte sur plusieurs lignes pour permettre d'ajouter et de retirer des choix plus facilement:

    MakePopupMenu("/Choix A"
                  "/Choix B"
                  "/Choix C"
                  "/Choix D"
                  "/Autre"
                  , "Choix D");

Pour finir, le nombre d'étiquettes est limité à 25. Il est donc impossible d'avoir plus de 25 choix accessibles par un PopupMenu...


Exemples de programmes

[Retour à l'index de WindowTools...]