home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / sonderh1 / stmenu.inc < prev    next >
Encoding:
Text File  |  1987-04-15  |  2.9 KB  |  81 lines

  1. (*-------------------------------------------------------------------------*)
  2. (*                           STMENU.INC                                    *)
  3. (*                                                                         *)
  4. (* Achtung: Wenn Sie 'StandardMenu' als Include-File in Ihr Hauptprogrammm *)
  5. (* einbauen wollen, muessen Sie folgende Variable im Hauptprogramm de-     *)
  6. (* klarieren:                                                              *)
  7. (*                                                                         *)
  8. (* CONST  AnzahlElemente = 2; "Anzahl Ihrer ELEMENTE - 1"                  *)
  9. (*        AuswahlText: ARRAY [0..AnzahlElemente] OF STRING[n] =            *)
  10. (*                     ('IhrErsterText','IhrZweiterText',...               *)
  11. (*                       'IhrletzterText');                                *)
  12. (*                                                                         *)
  13. (* TYPE elemente = (IhrErstes, weitere, IhrLetztes); "Aufzaehltyp"         *)
  14. (*         menge = Set of Elemente;                                        *)
  15. (*-------------------------------------------------------------------------*)
  16.  
  17. PROCEDURE StandardMenu (VAR auswahl: menge; gueltig: menge);
  18.  
  19. VAR i, j, k, aktAnzahl: INTEGER;
  20.     c: CHAR;
  21.     ze: elemente;
  22.     ingueltig: ARRAY [0..AnzahlElemente] OF BOOLEAN;
  23.   (*-----------------------------------------------------------------------*)
  24.  
  25.   PROCEDURE SchreibMenu;
  26.  
  27.     PROCEDURE InversAn;       (* InversAn und -Aus entsprechend anpassen ! *)
  28.     BEGIN LowVideo END;
  29.  
  30.     PROCEDURE InversAus;
  31.     BEGIN NormVideo END;
  32.  
  33.   BEGIN
  34.     GotoXY(1,1);
  35.     FOR i := 0 TO AnzahlElemente DO
  36.     IF elemente(i) IN gueltig THEN
  37.     BEGIN
  38.       ingueltig[i] := TRUE;
  39.       aktAnzahl := Succ(aktAnzahl);
  40.       Write(Chr(Ord('A')+aktanzahl),': ');
  41.       IF elemente(i) IN auswahl THEN InversAn;
  42.       Write(AuswahlText[i]);
  43.       InversAus; ClrEol; WriteLn;
  44.     END;
  45.     GotoXY(1,23); ClrEol;
  46.     Write('Z:'); InversAn; Write(' Auswahl beendet'); InversAus;
  47.   END;
  48.  
  49.   (*-----------------------------------------------------------------------*)
  50.  
  51. BEGIN (* StandardMenu *)
  52.   ClrScr;
  53.   FOR i := 0 TO AnzahlElemente DO ingueltig[i] := FALSE;
  54.   REPEAT
  55.     aktAnzahl := -1;
  56.     SchreibMenu;
  57.     REPEAT
  58.       Read(Kbd, c);
  59.       c := UpCase(c);
  60.       i := Ord(c)-Ord('A');
  61.     UNTIL (i >= 0) AND (i <= aktAnzahl) OR (c='Z');
  62.     IF c <> 'Z' THEN
  63.     BEGIN
  64.       k := 0; j := -1;
  65.       WHILE (j <= AnzahlElemente) AND (k <= i) DO
  66.       BEGIN
  67.         j := Succ(j);
  68.         IF ingueltig[j] THEN k := Succ(k);
  69.       END;
  70.       ze := elemente(j);
  71.       IF ze IN auswahl THEN
  72.         auswahl := auswahl-[ze]
  73.       ELSE
  74.         auswahl := auswahl+[ze];
  75.     END;
  76.   UNTIL c = 'Z'
  77. END;
  78.  
  79. (*-------------------------------------------------------------------------*)
  80. (*                      Ende von STMENU.INC                                *)
  81.