home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 08 / pulldown / pddemo.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-05-27  |  2.8 KB  |  89 lines

  1. (* ----------------------------------------------------------------------- *)
  2. (*                               PDDEMO.PAS                                *)
  3.  
  4. PROGRAM PullDown_Demo;
  5.  
  6. CONST (*$I PDCONST.PAS *)
  7.  
  8. TYPE  (*$I PDTYPE.PAS *)
  9.  
  10. VAR   k,
  11.       Result,
  12.       MainResult :INTEGER;
  13.       Key,
  14.       MainKey    :CHAR;
  15.       Extern     :InputStr;
  16.       (*$I PDVAR.PAS *)
  17.  
  18. (*$I PULLDOWN.PAS *)
  19.  
  20. (* -----------------  die zentrale Steuerungsroutine  -------------------- *)
  21. PROCEDURE RepeatPulldown (    xpos,ypos  :INTEGER;
  22.                           VAR Menu       :MenuType;
  23.                           VAR Result     :INTEGER;
  24.                           VAR Key        :CHAR;
  25.                           VAR Extern     :InputStr);
  26.    VAR first :BOOLEAN;
  27.  BEGIN
  28.    first := TRUE;
  29.    REPEAT
  30.      Pulldown (xpos,ypos,Menu,first,Result,Key,Extern);
  31.      CASE MainResult OF
  32.          1: CASE Result OF
  33.               1: { Work File };   2: { Main File };    3: { SaveQuit };
  34.               4: { SaveCont };    5: { QuitNoSave };
  35.             END;
  36.          2: CASE Result OF
  37.               1: { Edit };   2: { Compile };   3: { Link };   4: { Run };
  38.             END;
  39.          3: CASE Result OF
  40.               1: { Directory };   2: { Logged Drive };   3: { Set Paths };
  41.             END;
  42.          4: CASE Result OF
  43.               1: { Execute };       2: { Calculator };     3: { Clock };
  44.               4: { ASCII Table };   5: { Help };
  45.             END;
  46.          5: CASE Result OF
  47.               1: BEGIN ClrScr; Halt; END;                  (* ExitToDos... *)
  48.               2: { Continue };
  49.             END;
  50.          6: CASE Result OF
  51.               1: { Sound };     2: { WindowSize };
  52.               3: { AutoSave };  4: { Linker };
  53.             END;
  54.      END;
  55.      first := FALSE
  56.    UNTIL Key <> CR
  57.  END;
  58.  
  59. BEGIN
  60.   ClrScr;  GotoXY (1,1);                     (* Hauptmenue-Balken anzeigen *)
  61.   WITH Menu[1] DO
  62.   BEGIN
  63.     SetColors (NormalText,NormalBack);
  64.     FOR k := 1 TO NoItems DO  Write (Item[k]);
  65.   END;
  66.   SetColors (black,white);  GotoXY (1,2);       (* Schreibtisch herstellen *)
  67.   FOR k := 1 TO 1840 DO Write (#178);
  68.   SetColors (white,black);  GotoXY (1,25);
  69.   Write ('<RETURN> = activate pulldown menu      ':47,
  70.          '<ESC> = leave pulldown menu');
  71.   REPEAT
  72.     GotoXY (80,25);
  73.     REPEAT
  74.       REPEAT UNTIL KeyPressed;
  75.       Read (Kbd,Key);
  76.     UNTIL Key = CR;
  77.     Extern := '';
  78.     REPEAT
  79.       Pulldown (xpos[1],ypos[1],Menu[1],FALSE,MainResult,MainKey,Extern);
  80.       IF MainResult <> 0 THEN
  81.         BEGIN
  82.           k := Succ (MainResult);
  83.           RepeatPulldown (xpos[k],ypos[k],Menu[k],Result,Key,Extern);
  84.           IF Key IN [CrsLeft,CrsRight] THEN  Extern := Key + CR
  85.         END
  86.     UNTIL MainResult = 0;
  87.   UNTIL FALSE                            (*  Abbruch nur ueber "ExitToDOS" *)
  88. END.
  89.