home *** CD-ROM | disk | FTP | other *** search
- Program PullTest;
-
- uses Crt, Dos, Pulldown;
-
- label menu2;
-
- (* ------------------------------------------------------------------------ *)
- (* *)
- (* This program and the PULLDOWN.TPU unit may be used for non-commercial *)
- (* purposes only. If you do use the routines, how 'bout a little credit. *)
- (* Commercial rights may be obtained by contacting the author. *)
- (* *)
- (* Copywrite 1987 David Sampson *)
- (* P.O. Box 060573 *)
- (* Palm Bay, FL 32906 *)
- (* *)
- (* Source is available for $20 *)
- (* *)
- (* ------------------------------------------------------------------------ *)
-
-
- (* ------------------------------------------------------------------------ *)
- (* Start of Pulldown Declarations Contained in Pulldown Unit *)
- (* ------------------------------------------------------------------------ *)
-
- (* defines a data structure that holds the entire contents for each submenu *)
-
- {Type}
- (* ------------------------- SubMenu Declarations ----------------------- *)
- (* Num_Submenu_Entries - is the number of things in the submenu *)
- (* SubmenuChar - is the Captialized first letter in the submenu string. *)
- (* Make the first letter unique so that pressing it (upper or *)
- (* lower case) makes the submenu selection. You could also *)
- (* substitute numbers. *)
- (* SubmenuString - is the rest of the string that will be displayed in each *)
- (* submenu position. *)
- (* ------------------------------------------------------------------------ *)
- { SubMenu_record = record
- Num_Submenu_Entries : Integer;
- Submenu_Width : Integer;
- SubmenuChar : Array [1..10] of char;
- SubmenuString : Array [1..10] of string;
- end;
- MenuItemsM = record
- MenuEntriesFirst : array[1..20] of char;
- MenuEntriesString : array[1..20] of string;
- end;
- string80 = string[80]; }
-
- (* define the main pulldown menu header line, contents and positions *)
- {var
- NumofHeaders : Integer;
- Pulldown_Menu_Number : Integer;
- Pulldown_Menu_Selection : Integer;
- Main_Title_Position : Integer;
- PopUp_Menu_Selection : Integer;
- Show_Sub : Boolean;
- Selection_Made : Boolean;
- Done : Boolean;
- FirstChar : Array [1..10] of Char;
- HeadLine : Array [1..10] of String;
- HeadSpot : Array [1..10] of Integer;
- SubMenu : Array [1..10] of Submenu_Record;
- ch : Char;
- Main_Title : String80;
- Menu_Items : MenuItemsM;
-
- Procedure Cursor_On;
- Procedure Cursor_Off;
- Procedure DrawMainHeader;
- Procedure HandleKeyMain (ch : Char);
- Procedure HandleFuncKeyMain (ch : Char);
- Procedure Save_Screen;
- Procedure Restore_Screen;
- Procedure MakeMenu (x1_M, y1_M, x2_M, y2_M : Integer;
- Menu_ItemsM : MenuItemsM); }
-
- (* ------------------------------------------------------------------------ *)
- (* End of Pulldown Declarations contained in Pulldown Unit *)
- (* ------------------------------------------------------------------------ *)
-
- (* --------------------------- Your Variables ----------------------------- *)
- Var Done_PopUp_Menu : Boolean;
- (* ------------------------------------------------------------------------ *)
-
- Procedure MainMenu_Init;
- begin
- NumofHeaders := 4;
- FirstChar[1] := 'E';
- FirstChar[2] := 'D';
- FirstChar[3] := 'G';
- FirstChar[4] := 'P';
- HeadLine[1] := 'dit';
- Headline[2] := 'isk';
- HeadLine[3] := 'raph';
- HeadLine[4] := 'ortfolio';
- HeadSpot[1] := 6; { 10 } { alternatively use these nums }
- HeadSpot[2] := 17; { 25 }
- HeadSpot[3] := 28; { 42 }
- HeadSpot[4] := 40; { 58 }
- Main_Title := 'Program Title'; {set titile to '' }
- Main_Title_Position := 63;
- end;
-
- Procedure Menu_Init1;
- begin
- with Menu_Items do
- begin
- MenuEntriesFirst[1] := '1';
- MenuEntriesString[1] := ' Menu Item 1';
- MenuEntriesFirst[2] := '2';
- MenuEntriesString[2] := ' Menu Item 2';
- MenuEntriesFirst[3] := '3';
- MenuEntriesString[3] := ' Menu Item 3';
- MenuEntriesFirst[4] := '4';
- MenuEntriesString[4] := ' Menu Item 4';
- MenuEntriesFirst[5] := '5';
- MenuEntriesString[5] := ' Menu Item 5';
- end;
- end;
-
- Procedure Menu_Init2;
- Begin
- with Menu_Items do
- begin
- MenuEntriesFirst[1] := '1';
- MenuEntriesString[1] := ' Menu Item 1';
- MenuEntriesFirst[2] := '2';
- MenuEntriesString[2] := ' Menu Item 2';
- MenuEntriesFirst[3] := '3';
- MenuEntriesString[3] := ' Return To Pulldown Menu';
- end;
- end;
-
- Procedure Menu_Init3;
- Begin
- with Menu_Items do
- begin
- MenuEntriesFirst[1] := '1';
- MenuEntriesString[1] := ' Menu Item 1';
- MenuEntriesFirst[2] := '2';
- MenuEntriesString[2] := ' Menu Item 2';
- MenuEntriesFirst[3] := '3';
- MenuEntriesString[3] := ' Menu Item 3';
- MenuEntriesFirst[4] := '4';
- MenuEntriesString[4] := ' Menu Item 4';
- MenuEntriesFirst[5] := '5';
- MenuEntriesString[5] := ' Menu Item 5';
- MenuEntriesFirst[6] := '6';
- MenuEntriesString[6] := ' Menu Item 6';
- MenuEntriesFirst[7] := '7';
- MenuEntriesString[7] := ' Menu Item 7';
- end;
- end;
-
- Procedure Menu_Init4;
- Begin
- with Menu_Items do
- begin
- MenuEntriesFirst[1] := '1';
- MenuEntriesString[1] := ' Menu Item 1';
- MenuEntriesFirst[2] := '2';
- MenuEntriesString[2] := ' Menu Item 2';
- MenuEntriesFirst[3] := '3';
- MenuEntriesString[3] := ' Menu Item 3';
- MenuEntriesFirst[4] := '4';
- MenuEntriesString[4] := ' Menu Item 4';
- MenuEntriesFirst[5] := '5';
- MenuEntriesString[5] := ' Menu Item 5';
- end;
- end;
-
- Procedure Menu_Init5;
- Begin
- with Menu_Items do
- begin
- MenuEntriesFirst[1] := 'A';
- MenuEntriesString[1] := ' Menu Item 1';
- MenuEntriesFirst[2] := 'B';
- MenuEntriesString[2] := ' Menu Item 2';
- MenuEntriesFirst[3] := 'C';
- MenuEntriesString[3] := ' Menu Item 3';
- MenuEntriesFirst[4] := 'D';
- MenuEntriesString[4] := ' Menu Item 4';
- MenuEntriesFirst[5] := 'E';
- MenuEntriesString[5] := ' Menu Item 5';
- end;
- end;
-
- (* --------------------- Pulldown Menu Definitions ----------------------- *)
-
- Procedure Submenu_Init;
- begin
- (* ------------------------------------------------------------------------- *)
- (* Contents of Sub Menu # 1 *)
- (* ------------------------------------------------------------------------- *)
- with Submenu[1] do
- begin
- Num_Submenu_Entries := 3;
- Submenu_Width := 8;
- SubMenuChar[1] := '1';
- SubmenuChar[2] := '2';
- SubmenuChar[3] := '3';
- SubMenuString[1] := ' Item 1';
- SubmenuString[2] := ' Item 2';
- SubmenuString[3] := ' Item 3';
- end;
- (* ------------------------------------------------------------------------- *)
-
- (* ------------------------------------------------------------------------- *)
- (* Contents of Sub Menu # 2 *)
- (* ------------------------------------------------------------------------- *)
- with Submenu[2] do
- begin
- Num_Submenu_Entries := 3;
- Submenu_Width := 8;
- SubMenuChar[1] := 'A';
- SubMenuChar[2] := 'B';
- SubMenuChar[3] := 'Q';
- SubMenuString[1] := ' Item 1';
- SubMenuString[2] := ' Item 2';
- SubmenuString[3] := 'uit';
- end;
- (* ------------------------------------------------------------------------- *)
-
- (* ------------------------------------------------------------------------- *)
- (* Contents of Sub Menu # 3 *)
- (* ------------------------------------------------------------------------- *)
- with SubMenu[3] do
- begin
- Num_Submenu_Entries := 3;
- Submenu_Width := 20;
- SubMenuChar[1] := 'P';
- SubMenuChar[2] := 'G';
- SubMenuChar[3] := 'C';
- SubMenuString[1] := 'lot a single file';
- SubMenuString[2] := 'raph multiple files';
- SubMenuString[3] := 'ompare two files';
- end;
- (* ------------------------------------------------------------------------- *)
-
- (* ------------------------------------------------------------------------- *)
- (* Contents of Sub Menu # 4 *)
- (* ------------------------------------------------------------------------- *)
- with SubMenu[4] do
- begin
- Num_Submenu_Entries := 2;
- Submenu_Width := 16;
- SubMenuChar[1] := 'E';
- SubMenuChar[2] := 'P';
- SubMenuString[1] := 'dit Portfolio';
- SubMenuString[2] := 'ortfolio Report';
- end;
- (* ------------------------------------------------------------------------- *)
- end; { end of submenu init }
-
-
- BEGIN { main Program procedure }
- Cursor_Off;
- MainMenu_Init;
- Submenu_Init;
- DrawMainHeader;
- repeat
- ch := readkey;
- if ch <> #0 then HandleKeyMain (ch)
- else HandleFuncKeyMain (ReadKey);
- If Selection_Made = True then
- begin
- Show_Sub := False;
- Selection_Made := False;
-
- (* ------------------------------------------------------------------------ *)
- (* Your Code Goes Here *)
- (* ------------------------------------------------------------------------ *)
-
- (* ------------------------------------------------------------------------ *)
- (* The Pulldown Menu System will return three values: *)
- (* *)
- (* Pulldown_Menu_Number - The Selected Pulldown Menu *)
- (* Pulldown_Menu_Selection - The item number selected in the submenu *)
- (* PopUp_Menu_Selection - The PopUp menu item number if a menu was *)
- (* displayed *)
- (* *)
- (* Each of these values can be used in a case statement to trigger some *)
- (* action or call one of your other routines. *)
- (* ------------------------------------------------------------------------ *)
-
- textcolor (7); textbackground (0);
-
- Case Pulldown_Menu_Number of
-
- 1: Case Pulldown_Menu_Selection of
-
- 1 : begin
- Menu_Init1;
- MakeMenu (33, 12, 13, 5, Menu_Items);
- gotoxy (1,15); writeln ('Here''s your first screen. This will now be saved in memory.');
- writeln ('Hit the Return key to continue.');
- repeat
- ch := readKey;
- until ch = #13;
- Save_Screen;
- clrscr;
- gotoxy (1,15);
- write ('You selected Menu ', Pulldown_Menu_Number,
- ', Item ', Pulldown_Menu_Selection);
- GotoXY (1,17);
- WriteLn ('You selected PopUp Menu Item #',
- PopUp_Menu_Selection);
- GotoXY (1,19);
- writeln ('You can now run your application.');
- writeln;
- WriteLn ('Hit the Return key to go back to the Pulldown menu');
- writeln (' & restore the previous screen.');
- repeat
- ch := readKey;
- until ch = #13;
- Restore_Screen;
- gotoxy(1,15); ClrEol;
- gotoxy(1,16); ClrEol;
- end;
- 2 : begin
- Done_PopUp_Menu := false;
- Menu2: Menu_Init2;
- MakeMenu (33, 12, 25, 3, Menu_Items);
- If PopUp_Menu_Selection = 3 then
- Done_PopUp_Menu := True;
- If (not Done_PopUp_Menu) Then
- begin
- Save_Screen;
- ClrScr;
- gotoxy (1,10);
- write ('You selected Menu ', Pulldown_Menu_Number,
- ', Item ', Pulldown_Menu_Selection);
- GotoXY (1,12);
- WriteLn ('You selected PopUp Menu Item #',
- PopUp_Menu_Selection);
- gotoxy (1,15); writeln ('Hit the return key to continue');
- repeat ch := readkey; until ch = #13;
- Restore_Screen;
- Goto Menu2;
- end;
- end;
- 3 : begin
- Menu_Init3;
- MakeMenu (33, 12, 13, 7, Menu_Items);
- gotoxy (1,20);
- write ('You selected Menu ', Pulldown_Menu_Number,
- ', Item ', Pulldown_Menu_Selection);
- GotoXY (1,22);
- WriteLn ('You selected PopUp Menu Item #',
- PopUp_Menu_Selection);
- end;
- end; { end of case for submenu #1 }
-
- 2: Case Pulldown_Menu_Selection of
- 1 : begin
- Menu_Init4;
- MakeMenu (33, 12, 13, 5, Menu_Items);
- gotoxy (1,20);
- write ('You selected Menu ', Pulldown_Menu_Number,
- ', Item ', Pulldown_Menu_Selection);
- GotoXY (1,22);
- WriteLn ('You selected PopUp Menu Item #',
- PopUp_Menu_Selection);
- end;
- 2 : begin
- Menu_Init5;
- MakeMenu (33, 12, 13, 5, Menu_Items);
- gotoxy (1,20);
- write ('You selected Menu ', Pulldown_Menu_Number,
- ', Item ', Pulldown_Menu_Selection);
- GotoXY (1,22);
- WriteLn ('You selected PopUp Menu Item #',
- PopUp_Menu_Selection);
- end;
- 3 : begin
- Done := True; { Quit }
- end;
- end; { end of case for submenu #2 }
-
- 3: Case Pulldown_Menu_Selection of
- 1 : begin
- gotoxy (1,20);
- write ('You selected menu ', Pulldown_Menu_Number,
- ', item ', Pulldown_Menu_Selection);
- end;
- 2 : begin
- gotoxy (1,20);
- write ('You selected menu ', Pulldown_Menu_Number,
- ', item ', Pulldown_Menu_Selection);
- end;
- 3 : begin
- gotoxy (1,20);
- write ('You selected menu ', Pulldown_Menu_Number,
- ', item ', Pulldown_Menu_Selection);
- end;
- end; { end of case for submenu #3 }
-
- 4: Case Pulldown_Menu_Selection of
- 1 : begin
- gotoxy (1,20);
- write ('You selected menu ', Pulldown_Menu_Number,
- ', item ', Pulldown_Menu_Selection);
- end;
- 2 : begin
- gotoxy (1,20);
- write ('You selected menu ', Pulldown_Menu_Number,
- ', item ', Pulldown_Menu_Selection);
- end;
- end; { end of case for submenu #4 }
- end; { end of Pulldown_Menu_Number case }
-
- { -------------------------------------------------------------------------- }
- { Your code ends here }
- { -------------------------------------------------------------------------- }
- end; { end of If Selection_Made loop }
- until Done = True;
- Cursor_On;
- ClrScr;
- end.