VERSION 2 EDITION 3.0 ############################### !-> # Fichier Format Action # ° DDS graphiques ! # ---------:...........------ # ! # : Caract. : # - Barre de menu (fmt MNUBAR) ---! # !-> : Héxa : # # ! :..........: # - Menus déroulants (fmt PULLDOWN) ----- # -----! # # # ############################### R BARRE MNUBAR CHOIX 2Y 0B 1 2MNUBARCHC(1 MD01 '>Fichier') MNUBARCHC(2 MD02 'Forma>t') MNUBARCHC(3 MD03 '>Action') Le format BARRE est une barre de menu (mot-clé MNUBAR) La zone CHOIX contiendra après saisie le n° du menu déroulant (1=fichier/2=format/3=action) Si le curseur est positionné devant "Format" le format MD02 sera affiché (sans action de la part du pgm), ... etc ... |
R MD01 PULLDOWN MD1CHX 2Y 0B 1 2SNGCHCFLD CHOICE(1 '>Ouvrir') CHOICE(2 '>Fermer') CHOICE(3 '>Quitter' *SPACEB) R MD02 PULLDOWN MD2CHX 2Y 0B 1 2SNGCHCFLD CHOICE(1 '>Caractère') CHOICE(2 '>Hexa') R MD03 PULLDOWN MD3CHX 2Y 0B 1 2SNGCHCFLD CHOICE(1 '>Add') CHOICE(2 '>Delete') MD01,MD02 et MD03 sont des menus déroulants (mot-clé PULLDOWN) associés au format BARRE (cf plus haut) MD1CHX contiendra le n° du choix dans ce format 1=ouvrir,2=fermer,etc.. la ligne "Quitter" sera précédée d'une ligne blanche (*SPACEB) |
# Fichier Format Action ----------------------------------------------------------------------------- Résultat, Appuyez sur <<ENTREE>> |
Fichier Format Action. :--------------------:------------------------------------------------------- : 1. Ouvrir : : 2. Fermer : : : : 3. Quitter : :....................: Si l'utilisateur déplace le curseur vers la droite |
Fichier Format Action ----------.-----------------------.------------------------------------------ : 1. Caractère : : 2. Hexa : :.......................: Ainsi de suite ... |
Interaction avec un format traditionnel un format MNUBAR peut ne pas être traité par EXFMT, il est alors associé à un format traditionnel. (dans l'exemple F1 ) Il peut être écrit avant affichage (pour renseigner un texte) un format PULLDOWN est assimilé à une fenêtre, il peut être écrit avant affichage (renseignement de zone, autorisation ou interdiction d'option) Il peut être lu après (récupération de choix complexes) Traitement: R F1 MNUBARDSP(BARRE &mnu &opt) MNU 2Y 0H TEXT('N° du menu choisi) OPT 2S 0H TEXT('N° option dans menu') le pgm affiche et lit F1 (barre d'action "BARRE" associée) c'est le système qui gère la barre d'action et les menus déroulants |
le système affiche le format et la barre de menu associée gère les menus déroulants si besoin puis passe la main au programme sur utilisation d'une touche de fonction (MNU contient alors 0) ou choix valide dans un menu déroulant (MNU contient le n° du menu déroulant et OPT le N° du choix dans le menu) EXFMTF1 MNU IFEQ 3 (menu action) SELEC OPT WHEQ 1 ... (ajout) OPT WHEQ 2 ... (supression) ENDSL ENDIF ... rappel : R FMT MNUBARDSP(BARRE &mnu &opt) : MNU 2Y 0H TEXT('N° du menu choisi) : OPT 2S 0H TEXT('N° option dans menu') |
Il est possible d'avoir la main avant l'affichage du menu déroulant R BARRE MNUBAR CHOIX 2Y 0B 1 2MNUBARCHC(1 MD01 '>Fichier' &RT) ... --> RT 2Y 0H Votre programme reçoit le contrôle AVANT affichage de MD01 et doit l'afficher (après avoir renseigné certains indicateurs par exemple.) MNUBARSW(CAxx) niveau fichier, définit une touche permettant de passer de la barre d'action au format principal (position curseur sauvegardée) MNUCNL(CAxx) niveau fichier , définit une touche annulant l'affichage d'un menu déroulant. (menu déroulant effacé, retour à la barre de menu) Les choix simples sont représentés sur un écran graphique par des boutons radio |
Il est possible de définir des choix multiples (cases à cocher) MLTCHCFLD xxxx 2Y 0H 1 2MLTCHCFLD CHOICE(1 '>oui/non' CHCCTL(1 &ouinon) OUINON 1Y 0H TEXT('1= oui, 0=non') Sur le format traditionnel (F1) MNU contient le n° de menu OPT contient -1 (choix complexe) il faut alors lire le menu déroulant choisi. et traiter chaque zone associée à un CHCCTL 1 = cette option est cochée 0 = cette option n'est pas cochée. cette zone peut être pré-renseignée avant affichage (1 = pré-cochée) Pour un choix simple, vous pouvez associer CHCCTL au mot-clé SNGCHCFDL Dans tous les cas la valeur 2 permet d'indiquer une option indisponible |
R MD01 PULLDOWN MD1CHX 2Y 0B 1 2SNGCHCFLD !-> CHOICE(1 '>Ouvrir') ! CHOICE(2 '>Fermer') <--------! ! CHOICE(3 '>Quitter' *SPACEB) ! --- CHCCTL(1 &MD1CT1) ! CHCCTL(2 &MD1CT2) -----------! MD1CT1 1Y 0H TEXT('2=ouvrir interdit') MD1CT2 1Y 0H TEXT('2=fermer interdit') exemple (à lire de gauche à droite) : ouvrir = dft Z-ADD1 MD1CHX ! Z-ADD2 MD1CT1 fermer = interdit Z-ADD2 MD1CT2 !* autoriser "fermer" WRITEMD01 ! Z-ADD0 MD1CT2 * jusqu'à "QUITTER" !*répercuter les modifs à l'écran MNU DOUEQ1 ! WRITEMD01 OPT ANDEQ3 ! ... EXFMTF1 ! ... * ouverture demandée ! ENDIF MNU IFEQ 1 ! ... OPT ANDEQ1 ! ENDDO * interdir "ouvrir" ! MOVE*ON *INLR |
Le texte d'un menu déroulant (sur une barre d'action) " " d'une option dans un menu déroulant peut être défini dynamiquement CHOICE(1 &TXT ) TXT 10A P Vous pouvez associer à un texte d'option un libellé indiquant une touche de fonction équivalente à cette option.(raccourci clavier) CHOICE(3 '>Quitter') CHCACCEL(3 'F3') MNUBARSEP permet de définir les caractéristiques de la ligne de séparation: ((*COLOR xx) (*DSPATR xx) (*CHAR ' ')) !-- le caractère de votre choix. CHCAVAIL ((*COLOR xx) (*DSPATR( xx)) = idem pour un choix disponible CHCUNAVAIL ((*COLOR xx) (*DSPATR( xx)) = pour un choix indisponible CHCSLT ((*COLOR xx) (*DSPATR( xx)) = pour un élément choisi |