DEFINITION MODULE MENUE;
(****************************************************************************)
(* Eine Variable vom TYP MENUETYP enthaelt die Menupunkte fuer Selekt und   *)
(* fuer Choose als ein ein String-Array von 15 Feldern mit je bis zu 12     *)
(* Zeichen L{nge.                                                           *)
(* Das Array muss vor dem Aufruf initialisiert sein : z.B:                  *)
(* Menu(.1.):= 'Punkt 1';Menu(.2.):='Punkt 2';Menu(.3.):= 'Punkt 3' usw.    *)
(****************************************************************************)
(* Selekt ist ein Utility fuer die vertikale Menuwahl.                      *)
(* Der Aufruf:  Selekt(5,10,3,Menu,Wahl,1);                                 *)
(* Vor dem Aufruf muss Wahl auf 1 gesetzt werden !                          *)
(* Selekt stelt den WSCode u. den Cursor an bzw. aus .			    *)
(* Selekt liefert einen Wert fuer die Vaiable Wahl.                         *)
(* Der letzte Wert im Aufruf gibt den Faktor an, mit dem der Wert der       *)
(* Variable Wahl multipliziert wird. Normalerweise wird dieser Faktor 1 sein*)
(* In verschachtelten Menus ist der je nach Schachteltiefe 10 bis 1000 .    *)
(* Wahl erhaelt 0 bei ESC, -1 bei Pfeil rechts und -2 bei Pfeil links.      *)
(* KastenBlank l|scht bei Bedarf den Bereich f}r das Menu .                 *)
(****************************************************************************)
(* Choose verh{lt sich aehnlich wie Selekt nur mit drei Unterschieden:      *)
(* 1. Vertikale Darstellung , 2. kann nicht mit ESC oder den Pfeiltasten    *)
(* verlassen werden, 3. kann bei Weiter := TRUE  sofort wieder verlassen    *)
(* werden, was fuer DROP-DOWN-MENUS nuetzlich ist.                          *)
(* Die Anzahl der Menupunkte sollte auf 6 begrenzt werden :                 *)
(* Menu(.1.):='  P 1    '; usw.                                             *)
(****************************************************************************)
(* Bei Selekt und auch bei Choose ist eine Auswahl durch Eingabe der        *)
(* ersten Buchstaben der Menupunkte zusaetzlich zur Returntaste moeglich.   *)
(* Die Module stammen veraendert aus CHIP .                                 *)
(****************************************************************************)


TYPE MENUETYP =ARRAY(.1..15.) OF ARRAY(.0..12.) OF CHAR;
PROCEDURE Selekt(x,y,Anzahl:INTEGER; VAR M:MENUETYP; VAR Wahl:INTEGER;Faktor:
                 INTEGER);
PROCEDURE KastenBlank(x,y,Anzahl:INTEGER);
PROCEDURE Choose(x,y,Anzahl:INTEGER; VAR M:MENUETYP;VAR Wahl:INTEGER;
                 Weiter:BOOLEAN );
END MENUE.
