home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / TURBOPAS / PULLTP4.ZIP / PULLTEST.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1987-11-22  |  19.4 KB  |  422 lines

  1. Program PullTest;
  2.  
  3. uses Crt, Dos, Pulldown;
  4.  
  5. label menu2;
  6.  
  7. (* ------------------------------------------------------------------------ *)
  8. (*                                                                          *)
  9. (*  This program and the PULLDOWN.TPU unit may be used for non-commercial   *)
  10. (*  purposes only.  If you do use the routines, how 'bout a little credit.  *)
  11. (*  Commercial rights may be obtained by contacting the author.             *)
  12. (*                                                                          *)
  13. (*  Copywrite 1987       David Sampson                                      *)
  14. (*                       P.O. Box 060573                                    *)
  15. (*                       Palm Bay, FL  32906                                *)
  16. (*                                                                          *)
  17. (*  Source is available for $20                                             *)
  18. (*                                                                          *)
  19. (* ------------------------------------------------------------------------ *)
  20.  
  21.  
  22. (* ------------------------------------------------------------------------ *)
  23. (*         Start of Pulldown Declarations Contained in Pulldown Unit        *)
  24. (* ------------------------------------------------------------------------ *)
  25.  
  26. (*  defines a data structure that holds the entire contents for each submenu *)
  27.  
  28. {Type}
  29. (*  -------------------------  SubMenu Declarations  ----------------------- *)
  30. (*  Num_Submenu_Entries -  is the number of things in the submenu            *)
  31. (*  SubmenuChar - is the Captialized first letter in the submenu string.     *)
  32. (*                Make the first letter unique so that pressing it (upper or *)
  33. (*                lower case) makes the submenu selection.  You could also   *)
  34. (*                substitute numbers.                                        *)
  35. (*  SubmenuString - is the rest of the string that will be displayed in each *)
  36. (*                  submenu position.                         *)
  37. (*  ------------------------------------------------------------------------ *)
  38. {    SubMenu_record = record
  39.               Num_Submenu_Entries : Integer;
  40.               Submenu_Width       : Integer;
  41.               SubmenuChar         : Array [1..10] of char;
  42.               SubmenuString       : Array [1..10] of string;
  43.     end;
  44.     MenuItemsM  =  record
  45.                          MenuEntriesFirst  : array[1..20] of char;
  46.                          MenuEntriesString : array[1..20] of string;
  47.     end;
  48.     string80 = string[80]; }
  49.  
  50. (*      define the main pulldown menu header line, contents and positions    *)
  51. {var
  52.   NumofHeaders                :  Integer;
  53.   Pulldown_Menu_Number        :  Integer;
  54.   Pulldown_Menu_Selection     :  Integer;
  55.   Main_Title_Position         :  Integer;
  56.   PopUp_Menu_Selection        :  Integer;
  57.   Show_Sub                    :  Boolean;
  58.   Selection_Made              :  Boolean;
  59.   Done                        :  Boolean;
  60.   FirstChar                   :  Array [1..10] of Char;
  61.   HeadLine                    :  Array [1..10] of String;
  62.   HeadSpot                    :  Array [1..10] of Integer;
  63.   SubMenu                     :  Array [1..10] of Submenu_Record;
  64.   ch                          :  Char;
  65.   Main_Title                  :  String80;
  66.   Menu_Items                  :  MenuItemsM;
  67.  
  68.   Procedure Cursor_On;
  69.   Procedure Cursor_Off;
  70.   Procedure DrawMainHeader;
  71.   Procedure HandleKeyMain     (ch : Char);
  72.   Procedure HandleFuncKeyMain (ch : Char);
  73.   Procedure Save_Screen;
  74.   Procedure Restore_Screen;
  75.   Procedure MakeMenu (x1_M, y1_M, x2_M, y2_M   :  Integer;
  76.                       Menu_ItemsM              :  MenuItemsM); }
  77.  
  78. (* ------------------------------------------------------------------------ *)
  79. (*         End of Pulldown Declarations contained in Pulldown Unit          *)
  80. (* ------------------------------------------------------------------------ *)
  81.  
  82. (* --------------------------- Your Variables ----------------------------- *)
  83.       Var    Done_PopUp_Menu   :  Boolean;
  84. (* ------------------------------------------------------------------------ *)
  85.  
  86. Procedure MainMenu_Init;
  87. begin
  88.      NumofHeaders := 4;
  89.      FirstChar[1] := 'E';
  90.      FirstChar[2] := 'D';
  91.      FirstChar[3] := 'G';
  92.      FirstChar[4] := 'P';
  93.      HeadLine[1]  := 'dit';
  94.      Headline[2]  := 'isk';
  95.      HeadLine[3]  := 'raph';
  96.      HeadLine[4]  := 'ortfolio';
  97.      HeadSpot[1]  := 6;            { 10 }     { alternatively use these nums }
  98.      HeadSpot[2]  := 17;           { 25 }
  99.      HeadSpot[3]  := 28;           { 42 }
  100.      HeadSpot[4]  := 40;           { 58 }
  101.      Main_Title := 'Program Title';   {set titile to '' }
  102.      Main_Title_Position := 63;
  103. end;
  104.  
  105. Procedure Menu_Init1;
  106. begin
  107.       with Menu_Items do
  108.            begin
  109.                 MenuEntriesFirst[1]  := '1';
  110.                 MenuEntriesString[1] := ' Menu Item 1';
  111.                 MenuEntriesFirst[2]  := '2';
  112.                 MenuEntriesString[2] := ' Menu Item 2';
  113.                 MenuEntriesFirst[3]  := '3';
  114.                 MenuEntriesString[3] := ' Menu Item 3';
  115.                 MenuEntriesFirst[4]  := '4';
  116.                 MenuEntriesString[4] := ' Menu Item 4';
  117.                 MenuEntriesFirst[5]  := '5';
  118.                 MenuEntriesString[5] := ' Menu Item 5';
  119.             end;
  120. end;
  121.  
  122. Procedure Menu_Init2;
  123. Begin
  124.       with Menu_Items do
  125.            begin
  126.                 MenuEntriesFirst[1]  := '1';
  127.                 MenuEntriesString[1] := ' Menu Item 1';
  128.                 MenuEntriesFirst[2]  := '2';
  129.                 MenuEntriesString[2] := ' Menu Item 2';
  130.                 MenuEntriesFirst[3]  := '3';
  131.                 MenuEntriesString[3] := ' Return To Pulldown Menu';
  132.             end;
  133. end;
  134.  
  135. Procedure Menu_Init3;
  136. Begin
  137.       with Menu_Items do
  138.            begin
  139.                 MenuEntriesFirst[1]  := '1';
  140.                 MenuEntriesString[1] := ' Menu Item 1';
  141.                 MenuEntriesFirst[2]  := '2';
  142.                 MenuEntriesString[2] := ' Menu Item 2';
  143.                 MenuEntriesFirst[3]  := '3';
  144.                 MenuEntriesString[3] := ' Menu Item 3';
  145.                 MenuEntriesFirst[4]  := '4';
  146.                 MenuEntriesString[4] := ' Menu Item 4';
  147.                 MenuEntriesFirst[5]  := '5';
  148.                 MenuEntriesString[5] := ' Menu Item 5';
  149.                 MenuEntriesFirst[6]  := '6';
  150.                 MenuEntriesString[6] := ' Menu Item 6';
  151.                 MenuEntriesFirst[7]  := '7';
  152.                 MenuEntriesString[7] := ' Menu Item 7';
  153.             end;
  154. end;
  155.  
  156. Procedure Menu_Init4;
  157. Begin
  158.       with Menu_Items do
  159.            begin
  160.                 MenuEntriesFirst[1]  := '1';
  161.                 MenuEntriesString[1] := ' Menu Item 1';
  162.                 MenuEntriesFirst[2]  := '2';
  163.                 MenuEntriesString[2] := ' Menu Item 2';
  164.                 MenuEntriesFirst[3]  := '3';
  165.                 MenuEntriesString[3] := ' Menu Item 3';
  166.                 MenuEntriesFirst[4]  := '4';
  167.                 MenuEntriesString[4] := ' Menu Item 4';
  168.                 MenuEntriesFirst[5]  := '5';
  169.                 MenuEntriesString[5] := ' Menu Item 5';
  170.             end;
  171. end;
  172.  
  173. Procedure Menu_Init5;
  174. Begin
  175.       with Menu_Items do
  176.            begin
  177.                 MenuEntriesFirst[1]  := 'A';
  178.                 MenuEntriesString[1] := ' Menu Item 1';
  179.                 MenuEntriesFirst[2]  := 'B';
  180.                 MenuEntriesString[2] := ' Menu Item 2';
  181.                 MenuEntriesFirst[3]  := 'C';
  182.                 MenuEntriesString[3] := ' Menu Item 3';
  183.                 MenuEntriesFirst[4]  := 'D';
  184.                 MenuEntriesString[4] := ' Menu Item 4';
  185.                 MenuEntriesFirst[5]  := 'E';
  186.                 MenuEntriesString[5] := ' Menu Item 5';
  187.             end;
  188. end;
  189.  
  190. (* ---------------------  Pulldown Menu Definitions  ----------------------- *)
  191.  
  192. Procedure Submenu_Init;
  193. begin
  194. (* ------------------------------------------------------------------------- *)
  195. (*                         Contents of Sub Menu # 1                          *)
  196. (* ------------------------------------------------------------------------- *)
  197.      with Submenu[1] do
  198.           begin
  199.                Num_Submenu_Entries    :=     3;
  200.                Submenu_Width          :=     8;
  201.                SubMenuChar[1]         :=   '1';
  202.                SubmenuChar[2]         :=   '2';
  203.                SubmenuChar[3]         :=   '3';
  204.                SubMenuString[1]       :=   ' Item 1';
  205.                SubmenuString[2]       :=   ' Item 2';
  206.                SubmenuString[3]       :=   ' Item 3';
  207.           end;
  208. (* ------------------------------------------------------------------------- *)
  209.  
  210. (* ------------------------------------------------------------------------- *)
  211. (*                         Contents of Sub Menu # 2                          *)
  212. (* ------------------------------------------------------------------------- *)
  213.      with Submenu[2] do
  214.           begin
  215.                Num_Submenu_Entries    :=     3;
  216.                Submenu_Width          :=     8;
  217.                SubMenuChar[1]         :=   'A';
  218.                SubMenuChar[2]         :=   'B';
  219.                SubMenuChar[3]         :=   'Q';
  220.                SubMenuString[1]       :=   ' Item 1';
  221.                SubMenuString[2]       :=   ' Item 2';
  222.                SubmenuString[3]       :=   'uit';
  223.           end;
  224. (* ------------------------------------------------------------------------- *)
  225.  
  226. (* ------------------------------------------------------------------------- *)
  227. (*                         Contents of Sub Menu # 3                          *)
  228. (* ------------------------------------------------------------------------- *)
  229.      with SubMenu[3] do
  230.           begin
  231.                Num_Submenu_Entries    :=     3;
  232.                Submenu_Width          :=    20;
  233.                SubMenuChar[1]         :=    'P';
  234.                SubMenuChar[2]         :=    'G';
  235.                SubMenuChar[3]         :=    'C';
  236.                SubMenuString[1]       :=    'lot a single file';
  237.                SubMenuString[2]       :=    'raph multiple files';
  238.                SubMenuString[3]       :=    'ompare two files';
  239.           end;
  240. (* ------------------------------------------------------------------------- *)
  241.  
  242. (* ------------------------------------------------------------------------- *)
  243. (*                         Contents of Sub Menu # 4                          *)
  244. (* ------------------------------------------------------------------------- *)
  245.      with SubMenu[4] do
  246.           begin
  247.                Num_Submenu_Entries    :=     2;
  248.                Submenu_Width          :=    16;
  249.                SubMenuChar[1]         :=   'E';
  250.                SubMenuChar[2]         :=   'P';
  251.                SubMenuString[1]       :=   'dit Portfolio';
  252.                SubMenuString[2]       :=   'ortfolio Report';
  253.           end;
  254. (* ------------------------------------------------------------------------- *)
  255. end;  { end of submenu init }
  256.  
  257.  
  258. BEGIN                 { main Program procedure }
  259.      Cursor_Off;
  260.      MainMenu_Init;
  261.      Submenu_Init;
  262.      DrawMainHeader;
  263.      repeat
  264.            ch := readkey;
  265.            if ch <> #0 then    HandleKeyMain (ch)
  266.                else            HandleFuncKeyMain (ReadKey);
  267.      If Selection_Made = True then
  268.         begin
  269.              Show_Sub := False;
  270.              Selection_Made := False;
  271.  
  272. (* ------------------------------------------------------------------------ *)
  273. (*                            Your Code Goes Here                           *)
  274. (* ------------------------------------------------------------------------ *)
  275.  
  276. (* ------------------------------------------------------------------------ *)
  277. (*  The Pulldown Menu System will return three values:                      *)
  278. (*                                                                          *)
  279. (*      Pulldown_Menu_Number    - The Selected Pulldown Menu                *)
  280. (*      Pulldown_Menu_Selection - The item number selected in the submenu   *)
  281. (*      PopUp_Menu_Selection    - The PopUp menu item number if a menu was  *)
  282. (*                                displayed                                 *)
  283. (*                                                                          *)
  284. (*  Each of these values can be used in a case statement to trigger some    *)
  285. (*  action or call one of your other routines.                              *)
  286. (* ------------------------------------------------------------------------ *)
  287.  
  288.              textcolor (7); textbackground (0);
  289.  
  290.              Case Pulldown_Menu_Number of
  291.  
  292.                1: Case Pulldown_Menu_Selection of
  293.  
  294.                       1 : begin
  295.                                Menu_Init1;
  296.                                MakeMenu (33, 12, 13, 5, Menu_Items);
  297.                                gotoxy (1,15); writeln ('Here''s your first screen. This will now be saved in memory.');
  298.                                writeln ('Hit the Return key to continue.');
  299.                                repeat
  300.                                      ch := readKey;
  301.                                until ch = #13;
  302.                                Save_Screen;
  303.                                clrscr;
  304.                                gotoxy (1,15);
  305.                                write ('You selected Menu ', Pulldown_Menu_Number,
  306.                                     ', Item ', Pulldown_Menu_Selection);
  307.                                GotoXY (1,17);
  308.                                WriteLn ('You selected PopUp Menu Item #',
  309.                                          PopUp_Menu_Selection);
  310.                                GotoXY (1,19);
  311.                                writeln ('You can now run your application.');
  312.                                writeln;
  313.                                WriteLn ('Hit the Return key to go back to the Pulldown menu');
  314.                                writeln (' & restore the previous screen.');
  315.                                repeat
  316.                                      ch := readKey;
  317.                                until ch = #13;
  318.                                Restore_Screen;
  319.                                gotoxy(1,15); ClrEol;
  320.                                gotoxy(1,16); ClrEol;
  321.                            end;
  322.                        2 : begin
  323.                                 Done_PopUp_Menu := false;
  324.           Menu2:                Menu_Init2;
  325.                                 MakeMenu (33, 12, 25, 3, Menu_Items);
  326.                                 If PopUp_Menu_Selection = 3 then
  327.                                       Done_PopUp_Menu := True;
  328.                                 If (not Done_PopUp_Menu) Then
  329.                                    begin
  330.                                          Save_Screen;
  331.                                          ClrScr;
  332.                                          gotoxy (1,10);
  333.                                          write ('You selected Menu ', Pulldown_Menu_Number,
  334.                                                 ', Item ', Pulldown_Menu_Selection);
  335.                                          GotoXY (1,12);
  336.                                          WriteLn ('You selected PopUp Menu Item #',
  337.                                                    PopUp_Menu_Selection);
  338.                                          gotoxy (1,15); writeln ('Hit the return key to continue');
  339.                                          repeat ch := readkey; until ch = #13;
  340.                                          Restore_Screen;
  341.                                          Goto Menu2;
  342.                                    end;
  343.                            end;
  344.                        3 : begin
  345.                                 Menu_Init3;
  346.                                 MakeMenu (33, 12, 13, 7, Menu_Items);
  347.                                 gotoxy (1,20);
  348.                                 write ('You selected Menu ', Pulldown_Menu_Number,
  349.                                        ', Item ', Pulldown_Menu_Selection);
  350.                                 GotoXY (1,22);
  351.                                 WriteLn ('You selected PopUp Menu Item #',
  352.                                           PopUp_Menu_Selection);
  353.                            end;
  354.                   end; { end of case for submenu #1 }
  355.  
  356.                2: Case Pulldown_Menu_Selection of
  357.                       1 : begin
  358.                                Menu_Init4;
  359.                                MakeMenu (33, 12, 13, 5, Menu_Items);
  360.                                gotoxy (1,20);
  361.                                write ('You selected Menu ', Pulldown_Menu_Number,
  362.                                     ', Item ', Pulldown_Menu_Selection);
  363.                                GotoXY (1,22);
  364.                                WriteLn ('You selected PopUp Menu Item #',
  365.                                          PopUp_Menu_Selection);
  366.                            end;
  367.                        2 : begin
  368.                                 Menu_Init5;
  369.                                 MakeMenu (33, 12, 13, 5, Menu_Items);
  370.                                 gotoxy (1,20);
  371.                                 write ('You selected Menu ', Pulldown_Menu_Number,
  372.                                        ', Item ', Pulldown_Menu_Selection);
  373.                                 GotoXY (1,22);
  374.                                 WriteLn ('You selected PopUp Menu Item #',
  375.                                           PopUp_Menu_Selection);
  376.                            end;
  377.                        3 : begin
  378.                                 Done := True;  { Quit }
  379.                            end;
  380.                   end; { end of case for submenu #2 }
  381.  
  382.                3: Case Pulldown_Menu_Selection of
  383.                       1 : begin
  384.                              gotoxy (1,20);
  385.                              write ('You selected menu ', Pulldown_Menu_Number,
  386.                                     ', item ', Pulldown_Menu_Selection);
  387.                            end;
  388.                        2 : begin
  389.                              gotoxy (1,20);
  390.                              write ('You selected menu ', Pulldown_Menu_Number,
  391.                                     ', item ', Pulldown_Menu_Selection);
  392.                            end;
  393.                        3 : begin
  394.                             gotoxy (1,20);
  395.                              write ('You selected menu ', Pulldown_Menu_Number,
  396.                                     ', item ', Pulldown_Menu_Selection);
  397.                            end;
  398.                   end; { end of case for submenu #3 }
  399.  
  400.                4: Case Pulldown_Menu_Selection of
  401.                        1 : begin
  402.                              gotoxy (1,20);
  403.                              write ('You selected menu ', Pulldown_Menu_Number,
  404.                                     ', item ', Pulldown_Menu_Selection);
  405.                            end;
  406.                        2 : begin
  407.                              gotoxy (1,20);
  408.                              write ('You selected menu ', Pulldown_Menu_Number,
  409.                                     ', item ', Pulldown_Menu_Selection);
  410.                            end;
  411.                   end; { end of case for submenu #4 }
  412.              end;  { end of Pulldown_Menu_Number case }
  413.  
  414. { -------------------------------------------------------------------------- }
  415. {                          Your code ends here                               }
  416. { -------------------------------------------------------------------------- }
  417.         end;  { end of If Selection_Made loop }
  418.      until Done = True;
  419.      Cursor_On;
  420.      ClrScr;
  421. end.
  422.