home *** CD-ROM | disk | FTP | other *** search
- (*---------------------------------------------------------------------------*)
- (* DFMENUE.INC (Hauptmenue) *)
- FUNCTION Menue(Menue_Text : String255; Sp,Zl : INTEGER) : INTEGER;
-
- VAR
- Wahl,
- T_Anz, (* Anzahl Menuepunkte *)
- Fehler : INTEGER;
- T_Anf, (* Anfangs und Endpositionen *)
- T_End : ARRAY[0..20] OF INTEGER; (* der Menuepunkte *)
- Zeichen : CHAR;
- NullFlag : BOOLEAN;
-
- (* Lokale Prozedur von Menue *)
- PROCEDURE Init_Menue;
-
- VAR k : INTEGER;
-
- BEGIN
- Wahl := 1;
- (* Vorne und hinten ein Blank anfuegen *)
- Menue_Text := Concat(' ',Menue_Text);
- Menue_Text := Concat(Menue_Text,' ');
- FOR k := 2 TO Length(Menue_Text) DO BEGIN
- IF Menue_Text[k] = ' ' THEN
- IF Menue_Text[Pred(k)] <> ' ' THEN BEGIN
- T_End[Wahl] := Pred(k);
- Wahl := Succ(Wahl)
- END;
- IF Menue_Text[k] <> ' ' THEN (* *)
- IF Menue_Text[Pred(k)] = ' ' THEN
- T_Anf[Wahl] := Pred(k)
- END;
- (* Blanks wieder entfernen *)
- Delete(Menue_Text,1,1);
- Delete(Menue_Text,Length(Menue_Text),1);
- T_Anz:= Pred(Wahl)
- END;
-
-
- (* auch lokal zu Menue *)
- PROCEDURE Schreibe_Menue;
-
- VAR i : INTEGER;
-
- BEGIN
- GotoXY(Sp,Zl);
- FOR i := 1 TO Length(Menue_Text) DO BEGIN
- IF i = T_Anf[Wahl] THEN Write(Inv_Ein);
- IF i = T_End[Wahl] THEN Write(Inv_Aus);
- Write(Menue_Text[i]);
- END;
- END;
-
-
- (* Hier beginnt Function Menue *)
- BEGIN
- Init_Menue;
- Wahl := 1;
- Schreibe_Menue;
- REPEAT
- Zeichen := GetKey;
- CASE Zeichen OF
- CURSOR_LINKS : BEGIN
- Wahl := Pred(Wahl);
- IF Wahl < 1 THEN
- Wahl := T_Anz;
- Schreibe_Menue
- END;
- CURSOR_RECHTS : BEGIN
- Wahl := Succ(Wahl);
- IF Wahl > T_Anz THEN
- Wahl := 1;
- Schreibe_Menue
- END
- END
- UNTIL Zeichen = RETURN;
- Menue := Wahl
- END;
-
- (* Ende DFMENUE.INC *)
- (*---------------------------------------------------------------------------*)
-