
  Unit Menu ;

  Interface

  Type String8 = String[8];  String16 = String[16];

  Function  scanf:word;   { retourne le keycode + le caractŠre            }
           { utilise aussi les touches des clavier ‚tendu  }
           { rien a voir avec scanf du C }

  Procedure WriteMenuBar;
           { affiche la bar du menu en haut de l'‚cran     }
           { utilisez cette procedure au demarage du program }

  Function  menubar:word;  {(menuPosit:word) supprim‚ dans cet version    }
           { fonction principale utilis‚e a chaque appel  au menu         }
           {  voir plus loin pour le retour de valeur }

  Procedure errorMsg(s:String); { affiche la ligne en bas de l'‚cran      }
           { la longueur maximum est de 79 caractere  si la ligne est     }
           { plus longue elle sera tronqu‚e au  79e caractŠre             }

  Procedure initMenu(MenuBar_1,MenuBar_2,MenuBar_3,MenuBar_4:String8;
           Menu1_pd1,Menu1_pd2,Menu1_pd3,Menu1_pd4,Menu1_pd5,Menu1_pd6,
           Menu2_pd1,Menu2_pd2,Menu2_pd3,Menu2_pd4,Menu2_pd5,Menu2_pd6,
           Menu3_pd1,Menu3_pd2,Menu3_pd3,Menu3_pd4,Menu3_pd5,Menu3_pd6,
           Menu4_pd1,Menu4_pd2,Menu4_pd3,Menu4_pd4,Menu4_pd5,Menu4_pd6:String16 ;
           MenuColor_Def,MenuColor_item:byte);
          { initialise le menu cette procedure doit ˆtre appel‚e avant    }
          { utlisation du menu , au demarage du program                   }
          { taille maxi. des variable MenuBar_?       : 8  caract‚res     }
          { taille maxi. des variable MenuPullDowm    : 16 caract‚res     }
          { si une ligne est trop courte elle ajust‚e … la bonne valeur   }
          { si elle est trop longue elle est tronqu‚e … la valeur maximum }
          { toute les variable interne sont initialis‚e MenuPos , pour la }
          { position au d‚marage du Menu                                  }
          { MenuColor_Def  =  couleur par defaut                          }
          { MenuColor_item =  couleur de la bar de selection              }

  Procedure writehex(num:word);  { write_hexa_word }
            { affiche une variable word en hexadecimal  }
            { colonne , ligne , couleur , variable_a_afficher      }

  { Menu Unit n'a pas la puissance et la souplesse de Turbo-Vision }
  { mais la complexit‚ en moins et la rapidit‚ en plus             }
  { n'utilise pas Crt Unit donc pas de problŠme de bug             }

  Implementation (***************************************************)

  { la suite quelques centaine de ligne d'assambleur sans commentaire}







