
  PROGRAM DemoMenu ;  { utilise menu.pas  un bon exemple
                        vaut mieux qu'un long discours  }

  USES  menu,crt ;     { tb menu }   { $R+}

  {$M 4000,4000,4000} { taille minimum pour la pile et le tas  }
                      { 4000 octets pour heapMin et heapMax }

  Const caract : set of 31..255 = [32..255];

Procedure writeKeyCode;
  Var k:word;
  Begin
  textAttr := 11;
  Repeat
  gotoxy(10,18);
  Write (' pour revenir au menu appuyer sur Escap ');
  gotoxy(10,20);
  K := Scanf;
  if lo(k) in caract Then
      write (' caractŠre = ',Char(lo(k)))
  else
      write (' caractŠre = ',#32);
  Write('    Keycode = $');
  writeHex(k);
  Until k = $011b;
  end;

Procedure WriteKey(key:word);
  begin
  gotoxy(40,15);
  writeHex(key);
  End;

Procedure Init;
  Begin
  initMenu(   ' File  1 ',         { MenuBar_1 }
              ' Edit  2',          { menubar_2 }
              ' Print 3',          { menubar_3 }
              ' Help        4  ',  { menubar_4 }
              ' rien_du_tout   ',  { Menu1_pd1 }
              ' clavier',          { Menu1_pd2 }
              '                ',  { Menu1_pd3 }
              ' Efface ErrorMsg',  { Menu1_pd4 }
              ' New   ErrorMsg ',  { Menu1_pd5 }
              ' Quit           ',  { Menu1_pd6 }
              ' Return  $FF21  ',  { Menu2_pd1 }
              ' Return  $FF22  ',  { Menu2_pd2 }
              ' Return  $FF23  ',  { Menu2_pd3 }
              ' Return  $FF24  ',  { Menu2_pd4 }
              ' Return  $FF25  ',  { Menu2_pd5 }
              ' Return  $FF26  ',  { Menu2_pd6 }
              ' Return  $FF31  ',  { Menu3_pd1 }
              ' Return  $FF32  ',  { Menu3_pd2 }
              ' Return  $FF33  ',  { Menu3_pd3 }
              ' Return  $FF34  ',  { Menu3_pd4 }
              ' Return  $FF35  ',  { Menu3_pd5 }
              ' Return  $FF36  ',  { Menu3_pd6 }
              ' Return  $FF41  ',  { Menu4_pd1 }
              ' Return  $FF42  ',  { Menu4_pd2 }
              ' Return  $FF43  ',  { Menu4_pd3 }
              ' Return  $FF44  ',  { Menu4_pd4 }
              ' Return  $FF45  ',  { Menu4_pd5 }
              ' Return  $FF46  ',  { Menu4_pd6 }
              $6F,                 { MenuColor_Def }
              $2F);                { MenuColor_item }
  End;



Procedure Mains;
  Var Key:word;
  Begin
  WriteMenuBar;
  errorMsg(' appuyez sur F10 pour activer le Menu ');
  Repeat  { debut de la boucle }
  Case key of
          (******************** MENU FILE **********************)
  $FF11 :               ;
  $FF12 : WriteKeycode ;
  $FF13 :               ;
  $FF14 : errorMsg('');          { efface le message precedent }
  $FF15 : errorMsg(' Voici un nouveau message d''erreur ');
  $FF16 : break;
          (******************** MENU EDIT ***********************)
  $FF21 : writeKey(key) ;
  $FF22 : writeKey(key) ;
  $FF23 : writeKey(key) ;
  $FF24 : writeKey(key) ;
  $FF25 : writeKey(key) ;
  $FF26 : writeKey(key) ;
          (******************** MENU PRINT **********************)
  $FF31 : writeKey(key) ;
  $FF32 : writeKey(key) ;
  $FF33 : writeKey(key) ;
  $FF35 : writeKey(key) ;
  $FF36 : writeKey(key) ;
  $FF34 : writeKey(key) ;
          (******************* MENU HELP ************************)
  $FF41 : writeKey(key) ;
  $FF42 : writeKey(key) ;
  $FF43 : writeKey(key) ;
  $FF44 : writeKey(key) ;
  $FF45 : writeKey(key) ;
  $FF46 : writeKey(key) ;
          (******************** MENUBAR *************************)
  $4400 : Begin key := menubar; continue; End; { F10 n'oubliez pas continue }
  End ;    {******** end of case ********}
  key := Scanf;
  Until  (key = $2D00) ;    { Alt-X }
  End;


  Begin
  Init;
  Mains;
  END.

