home *** CD-ROM | disk | FTP | other *** search
- (*-------------------------------------------------------------------------*)
- (* STMENU.INC *)
- (* *)
- (* Achtung: Wenn Sie 'StandardMenu' als Include-File in Ihr Hauptprogrammm *)
- (* einbauen wollen, muessen Sie folgende Variable im Hauptprogramm de- *)
- (* klarieren: *)
- (* *)
- (* CONST AnzahlElemente = 2; "Anzahl Ihrer ELEMENTE - 1" *)
- (* AuswahlText: ARRAY [0..AnzahlElemente] OF STRING[n] = *)
- (* ('IhrErsterText','IhrZweiterText',... *)
- (* 'IhrletzterText'); *)
- (* *)
- (* TYPE elemente = (IhrErstes, weitere, IhrLetztes); "Aufzaehltyp" *)
- (* menge = Set of Elemente; *)
- (*-------------------------------------------------------------------------*)
-
- PROCEDURE StandardMenu (VAR auswahl: menge; gueltig: menge);
-
- VAR i, j, k, aktAnzahl: INTEGER;
- c: CHAR;
- ze: elemente;
- ingueltig: ARRAY [0..AnzahlElemente] OF BOOLEAN;
- (*-----------------------------------------------------------------------*)
-
- PROCEDURE SchreibMenu;
-
- PROCEDURE InversAn; (* InversAn und -Aus entsprechend anpassen ! *)
- BEGIN LowVideo END;
-
- PROCEDURE InversAus;
- BEGIN NormVideo END;
-
- BEGIN
- GotoXY(1,1);
- FOR i := 0 TO AnzahlElemente DO
- IF elemente(i) IN gueltig THEN
- BEGIN
- ingueltig[i] := TRUE;
- aktAnzahl := Succ(aktAnzahl);
- Write(Chr(Ord('A')+aktanzahl),': ');
- IF elemente(i) IN auswahl THEN InversAn;
- Write(AuswahlText[i]);
- InversAus; ClrEol; WriteLn;
- END;
- GotoXY(1,23); ClrEol;
- Write('Z:'); InversAn; Write(' Auswahl beendet'); InversAus;
- END;
-
- (*-----------------------------------------------------------------------*)
-
- BEGIN (* StandardMenu *)
- ClrScr;
- FOR i := 0 TO AnzahlElemente DO ingueltig[i] := FALSE;
- REPEAT
- aktAnzahl := -1;
- SchreibMenu;
- REPEAT
- Read(Kbd, c);
- c := UpCase(c);
- i := Ord(c)-Ord('A');
- UNTIL (i >= 0) AND (i <= aktAnzahl) OR (c='Z');
- IF c <> 'Z' THEN
- BEGIN
- k := 0; j := -1;
- WHILE (j <= AnzahlElemente) AND (k <= i) DO
- BEGIN
- j := Succ(j);
- IF ingueltig[j] THEN k := Succ(k);
- END;
- ze := elemente(j);
- IF ze IN auswahl THEN
- auswahl := auswahl-[ze]
- ELSE
- auswahl := auswahl+[ze];
- END;
- UNTIL c = 'Z'
- END;
-
- (*-------------------------------------------------------------------------*)
- (* Ende von STMENU.INC *)