home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / sonderh1 / dfmenue.inc < prev    next >
Text File  |  1987-06-10  |  2KB  |  82 lines

  1. (*---------------------------------------------------------------------------*)
  2. (*                     DFMENUE.INC (Hauptmenue)                              *)
  3. FUNCTION Menue(Menue_Text : String255; Sp,Zl : INTEGER) : INTEGER;
  4.  
  5. VAR
  6.    Wahl,
  7.    T_Anz,                                        (* Anzahl Menuepunkte      *)
  8.    Fehler             : INTEGER;
  9.    T_Anf,                                        (* Anfangs und Endpositionen *)
  10.    T_End              : ARRAY[0..20] OF INTEGER; (* der Menuepunkte           *)
  11.    Zeichen            : CHAR;
  12.    NullFlag           : BOOLEAN;
  13.  
  14. (* Lokale Prozedur von Menue *)
  15. PROCEDURE Init_Menue;
  16.  
  17. VAR k : INTEGER;
  18.  
  19. BEGIN
  20.   Wahl := 1;
  21.   (* Vorne und hinten ein Blank anfuegen *)
  22.   Menue_Text := Concat(' ',Menue_Text);
  23.   Menue_Text := Concat(Menue_Text,' ');
  24.   FOR k := 2 TO Length(Menue_Text) DO BEGIN
  25.     IF Menue_Text[k] = ' ' THEN
  26.       IF Menue_Text[Pred(k)] <> ' ' THEN BEGIN
  27.         T_End[Wahl] := Pred(k);
  28.         Wahl := Succ(Wahl)
  29.       END;
  30.     IF Menue_Text[k] <> ' ' THEN  (* *)
  31.       IF Menue_Text[Pred(k)] = ' ' THEN
  32.         T_Anf[Wahl] := Pred(k)
  33.   END;
  34.   (* Blanks wieder entfernen *)
  35.   Delete(Menue_Text,1,1);
  36.   Delete(Menue_Text,Length(Menue_Text),1);
  37.   T_Anz:= Pred(Wahl)
  38. END;
  39.  
  40.  
  41. (* auch lokal zu Menue *)
  42. PROCEDURE Schreibe_Menue;
  43.  
  44. VAR i     : INTEGER;
  45.  
  46. BEGIN
  47.   GotoXY(Sp,Zl);
  48.   FOR i := 1 TO Length(Menue_Text) DO BEGIN
  49.     IF i = T_Anf[Wahl] THEN Write(Inv_Ein);
  50.       IF i = T_End[Wahl] THEN Write(Inv_Aus);
  51.     Write(Menue_Text[i]);
  52.   END;
  53. END;
  54.  
  55.  
  56. (* Hier beginnt Function Menue *)
  57. BEGIN
  58.   Init_Menue;
  59.   Wahl := 1;
  60.   Schreibe_Menue;
  61.   REPEAT
  62.     Zeichen := GetKey;
  63.     CASE Zeichen OF
  64.       CURSOR_LINKS : BEGIN
  65.                        Wahl := Pred(Wahl);
  66.                        IF Wahl < 1 THEN
  67.                           Wahl := T_Anz;
  68.                        Schreibe_Menue
  69.                      END;
  70.       CURSOR_RECHTS : BEGIN
  71.                         Wahl := Succ(Wahl);
  72.                         IF Wahl > T_Anz THEN
  73.                           Wahl := 1;
  74.                         Schreibe_Menue
  75.                       END
  76.     END
  77.   UNTIL Zeichen = RETURN;
  78.   Menue := Wahl
  79. END;
  80.  
  81. (*                      Ende  DFMENUE.INC                                    *)
  82. (*---------------------------------------------------------------------------*)