PANORAMIC
: CREER UN MENU
PAGE PRINCIPALE /PAGE TUTORIELS
Ce qu'il faut savoir pour créer un menu:
Objets MAIN_MENU et SUB_MENU
Un menu est un système hierarchique, composé d'un objet système principal MAIN_MENU, qui est invisible, auquel sont rattachés des objets système SUB_MENU, par la commande PARENT.
Les objets système SUB_MENU sont des objets visibles. Les libellés s'affichant sur les menus sont obtenus par la commande CAPTION sur un objet SUB_MENU.
Lorsqu'on relie un SUB_MENU à un MAIN_MENU, on obtient un menu de premier niveau, c'est à dire qu'on peut cliquer directement.
Lorsqu'on relie un SUB_MENU à un SUB_MENU, on obtient un menu de niveau inférieur, c'est à dire accessible par un click sur le niveau supérieur.
Utilisation d'un menu
Lorsqu'on clique sur un élément d'un menu (de niveau quelconque), il y a 2 manières d'exécuter une action :
- on teste directement que le menu a été cliqué par la fonction CLICKED(N) dans laquelle N est le numéro du SUB_MENU.
Cette fonction, qui n'est pas particulière aux menus, mémorise un click sur un objet : elle rend 1 si on a cliqué sur un objet et 0 sinon. De plus, s'il y a eu un click, sa valeur est réinitialisé après la lecture. Si la valeur est 1, elle est alors réinitialisée à 0 pour prendre en compte un nouveau click sur l'objet.
- on prévoit dans le programme qu'un bout de programme, défini par un LABEL sera exécuté à chaque fois que le SUB_MENU sera cliqué.
ON_CLICK(N),abc : tout click sur l'objet numéro N provoquera l'exécution de la partie du programme commençant par "abc".
Création d'un premier niveau de menu
On se crée un premier niveau de menu, c'est à dire un menu toujours visible, constitué de 2 parties : "Fichier" et "Edition" :
|
main_menu 1: rem on crée un menu principal (objet système numéro 1)
sub_menu 2 : rem on crée un sous-menu (objet système numéro 2) parent 2,1 : rem qui est relié au menu principal (1) pour se mettre au 1er niveau caption 2,"Fichier" : rem ce sous-menu affiche "Fichier"
sub_menu 3 : rem on crée un autre sous-menu (objet système numéro 3) parent 3,1 : rem qui est relié au menu principal (1) pour se mettre au 1er niveau caption 3,"Edition" : rem ce sous-menu affiche "Edition"
|
Création d'un second niveau de menu
On veut maintenant que lorsqu'on clique sur le premier niveau "Fichier", il s'affiche un second niveau constitué de "Ouvrir" et de "Sauvegarder", et que lorsqu'on clique sur le premier niveau "Edition", il s'affiche un autre second niveau constitué de "Couper", "Copier", "Coller".
On complète l'exemple précédent par :
|
sub_menu 4 : rem on crée un sous-menu (objet système numéro 4) parent 4,2 : rem qui est relié au sous-menu numéro 2 (celui qui affiche "Fichier") caption 4,"Ouvrir" : rem ce sous-menu affiche "Ouvrir"
sub_menu 5 : rem on crée un sous-menu (objet système numéro 5) parent 5,2 : rem qui est relié au sous-menu numéro 2 (celui qui affiche "Fichier") caption 5,"Sauvegarder" : rem ce sous-menu affiche "Sauvegarder"
sub_menu 6 : rem on crée un sous-menu (objet système numéro 6) parent 6,3 : rem qui est relié au sous-menu numéro 3 (celui qui affiche "Edition") caption 6,"Couper" : rem ce sous-menu affiche "Couper"
sub_menu 7 : rem on crée un sous-menu (objet système numéro 6) parent 7,3 : rem qui est relié au sous-menu numéro 3 (celui qui affiche "Edition") caption 7,"Copier" : rem ce sous-menu affiche "Copier"
sub_menu 8 : rem on crée un sous-menu (objet système numéro 6) parent 8,3 : rem qui est relié au sous-menu numéro 3 (celui qui affiche "Edition") caption 8,"Coller" : rem ce sous-menu affiche "Coller"
|
Affectation d'une partie de programme au click sur un sous-menu
On veut qu'à chaque fois qu'on clique sur Coller, on exécute la partie de programme qui commence par "collage".
"collage" est un LABEL. On le définit par le mot-clé LABEL.
Par la commande on_click 8,collage, on indique qu'à chaque fois qu'on cliquera sur l'objet système numéro 8 (c'est à dire le sous-menu qui affiche "Coller"), on exécutera la partie du programme marquée par le LABEL collage.
Remarque : cette méthode (affecter une partie du programme à un événement "click") n'est pas spécifique à un sous-menu : elle est valable pour tout objet visible.
|
label collage : rem on crée une marque on_click 8,collage : rem à chaque click sur l'objet 8 on exécute à partir de la marque end : rem fin du programme principal
collage: print "on a cliqué sur l'objet Coller" return : rem fin de ce qu'on exécute à chaque click sur "Coller" |
Test si on a cliqué sur un sous-menu
L'autre manière de réagir à un click sur un objet (donc à un click sur un sous-menu) est de tester la mémorisation d'un click par CLICKED.
On veut par exemple afficher le texte "on a cliqué sur Copier" si on a cliqué sur l'objet numéro 7 (sous-menu qui affiche "Copier).
Cette méthode elle est valable pour tout objet visible.
|
if clicked(7)=1 then print "on a cliqué sur Copier" rem ici, clicked(7) vaut 0 car réinitialisé après lecture
|
Mise à jour : 5 Juin 2008