home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / MISC / PBAPI10.ZIP / DEMOMENU.BAS < prev    next >
BASIC Source File  |  1998-02-21  |  9KB  |  280 lines

  1. ' ─────────────────────────────────────────────────────────────────────────
  2. ' Program Title: Demo for Menu Control Screen
  3. '     Copyright: 1997-98 By Freejack's Software
  4. '        Author: Gary Price
  5. ' Last Modified: 02/21/98
  6. ' ─────────────────────────────────────────────────────────────────────────
  7. '         Notes:
  8. ' ─────────────────────────────────────────────────────────────────────────
  9. '       History:
  10. ' ─────────────────────────────────────────────────────────────────────────
  11.  
  12. $CPU 80386                 ' program works 386 or higher CPU
  13.  
  14. $OPTIMIZE SPEED
  15.  
  16. '$COMPILE EXE  "DEMOMENU.EXE"  ' compile to an EXE
  17.  
  18. $DEBUG MAP OFF             ' turn off map file generation
  19. $DEBUG PBDEBUG OFF         ' don't include pbdebug support in our executable
  20.  
  21. $LIB COM        OFF        ' turn off PowerBASIC's communications library.
  22. $LIB LPT        OFF        ' turn off PowerBASIC's printer support library.
  23. $LIB IPRINT     OFF        ' turn off PowerBASIC's interpreted print library.
  24. $LIB FULLFLOAT  OFF        ' turn off PowerBASIC's floating point support.
  25.  
  26. $ERROR ALL OFF
  27.  
  28. $FLOAT PROCEDURE           ' use procedural floating point to optimize for
  29.                               ' machines without a co-processor
  30.  
  31. $STRING 16                 ' set largest string size at 8k
  32. $STACK 2048                ' let's use a 2k stack
  33.  
  34. $DIM none 'ALL                   ' force arrays to be pre-dimensioned before they can
  35.                            ' be used
  36.  
  37. $DYNAMIC                   ' all arrays will be dynamic by default
  38.  
  39. $OPTION CNTLBREAK OFF      ' don't allow Ctrl-Break to exit program
  40.  
  41. DEFINT A-Z                 ' default all variables to integers for maximum
  42.                            ' speed and minimum
  43.  
  44. '============================================================================
  45. '                          DECLARATIONS SECTION
  46. '============================================================================
  47. ' ** THIS SECTION IS FOR LINKS AND INCLUDES STATMENTS **
  48.  
  49. $LINK "G:\PB35\TBAPI10\PBAPI10.PBL"    ' ** SET THIS LINE TO YOUR PATH **
  50. $INCLUDE "G:\PB35\TBAPI10\PBAPI10.INC" ' ** SET THIS LINE TO YOUR PATH **
  51.  
  52. '---------------------------------------------------------------------------
  53. ' ** DECLARE LOCAL SUB's BELOW THAT WILL BE USED IN THIS PROGRAM **
  54. '
  55. '---------------------------------------------------------------------------
  56. '* DECLARE ALL LOCAL AND SHARED VARIABLES USED IN MAIN PROGRAM BETWEEN SUBS *
  57. '
  58. DIM HorzMenu(1:5)   AS STRING
  59.  
  60. DIM VertMenu1(1:9)  AS STRING
  61. DIM VertInfo1(1:9)  AS STRING
  62.  
  63. DIM VertMenu2(1:9)  AS STRING
  64. DIM VertInfo2(1:9)  AS STRING
  65.  
  66. DIM VertMenu3(1:9)  AS STRING
  67. DIM VertInfo3(1:9)  AS STRING
  68.  
  69. DIM VertMenu4(1:9)  AS STRING
  70. DIM VertInfo4(1:9)  AS STRING
  71.  
  72. DIM Mouse           AS INTEGER
  73. DIM HelpTextColor   AS INTEGER
  74. DIM HelpAttr        AS INTEGER
  75. DIM TopRow          AS INTEGER
  76. DIM Marker          AS INTEGER
  77. DIM BarSave         AS STRING
  78. DIM HiLight            AS INTEGER
  79. DIM HPointer        AS INTEGER
  80. DIM VRtrn           AS STRING
  81. DIM x                AS INTEGER
  82.  
  83. '----------------------------------------------------------------------------
  84. ' ** SET THIS LINE BELOW TO YOUR TRIBBS MAIN NODE's DIRECTORY **
  85.  
  86. 'NOTE: This is only needed when you want to access TriBBS Database Files.
  87. TBNode1sMainDirectory = "E:\TRIBBS"
  88.  
  89. '============================================================================
  90.  
  91. '============================================================================
  92. '                         ** MAIN PROGRAM BODY **
  93. '============================================================================
  94.  
  95. ' NOTE:
  96. '  To calculate a color number for the "Attr", select a color from 1 to 15,
  97. '  then mulptiply x 16. If you want to do forground, then add the number of
  98. '  color to the sum of the multiplied answer like so: 1 x 16 = 16 for Blue
  99. '  Background, add 15 for a total of 31 to give you Blue background with
  100. '  White forground. You can also call the Sub MakeByte(Attr%,lowbyte%,hibyte%)
  101. '  which will perform the same operation. Example below:
  102. '  MakeByte Attr%, 15, 1.   Attr% = 31
  103. '
  104. '----------------------------------------------------------------------------
  105.  
  106. HorzMenu$(1) = "@File"
  107. HorzMenu$(2) = "@Edit"
  108. HorzMenu$(3) = "@Screen"
  109. HorzMenu$(4) = "@Help"
  110. '----------------------------------------------------------------------------
  111.  
  112. VertMenu1$(1) = "@Quit"
  113. 'VertMenu1$(2) = " "
  114. 'VertMenu1$(3) = "_"
  115. 'VertMenu1$(4) = " "
  116. 'VertMenu1$(5) = "_"
  117. 'VertMenu1$(6) = " "
  118. 'VertMenu1$(7) = " "
  119. 'VertMenu1$(8) = " "
  120.  
  121. VertInfo1$(1) = "Quit and Return to System!"
  122. 'VertInfo1$(2) = ""
  123. 'VertInfo1$(4) = ""
  124. 'VertInfo1$(6) = ""
  125. 'VertInfo1$(7) = ""
  126. 'VertInfo1$(8) = ""
  127.  
  128. '----------------------------------------------------------------------------
  129. VertMenu2$(1) = "@Open Files"
  130. 'VertMenu2$(2) = "_"
  131. 'VertMenu2$(3) = " "
  132. 'VertMenu2$(4) = "_"
  133. 'VertMenu2$(5) = " "
  134. 'VertMenu2$(6) = "_"
  135. 'VertMenu2$(7) = " "
  136. 'VertMenu2$(8) = " "
  137.  
  138. VertInfo2$(1) = "Open and Edit Files!"
  139. 'VertInfo2$(3) = " "
  140. 'VertInfo2$(5) = " "
  141. 'VertInfo2$(7) = " "
  142. 'VertInfo2$(8) = " "
  143. '----------------------------------------------------------------------------
  144. VertMenu3$(1) = "@Screen Control"
  145. 'VertMenu3$(2) = " "
  146. 'VertMenu3$(3) = "_"
  147. 'VertMenu3$(4) = " "
  148. 'VertMenu3$(5) = " "
  149. 'VertMenu3$(6) = " "
  150. 'VertMenu3$(7) = " "
  151.  
  152. VertInfo3$(1) = "Screen Controls"
  153. 'VertInfo3$(2) = " "
  154. 'VertInfo3$(4) = " "
  155. 'VertInfo3$(5) = " "
  156. 'VertInfo3$(6) = " "
  157. 'VertInfo3$(7) = " "
  158. '----------------------------------------------------------------------------
  159. VertMenu4$(1) = "Help @Commands"
  160. 'VertMenu4$(2) = "_"
  161. 'VertMenu4$(3) = " "
  162. 'VertMenu4$(4) = " "
  163. 'VertMenu4$(5) = "_"
  164. 'VertMenu4$(6) = " "
  165. 'VertMenu4$(7) = " "
  166. 'VertMenu4$(8) = " "
  167.  
  168. VertInfo4$(1) = "Help Commands for this program"
  169. 'VertInfo4$(3) = " "
  170. 'VertInfo4$(4) = " "
  171. 'VertInfo4$(6) = " "
  172. 'VertInfo4$(7) = " "
  173. 'VertInfo4$(8) = " "
  174. '----------------------------------------------------------------------------
  175.  
  176. IF CheckForMouse% THEN Mouse% = 1
  177.  
  178. SCREEN 0
  179.  
  180. CenterPrint "Demo Menu",1,80,32,31
  181. LOCATE 2,1,0: COLOR 7,9: PRINT STRING$(80, 205);
  182.  
  183. 'Screen color = for background, ( 7 x 16 = 112), now add 15 for foregroud,
  184. ' ( 112 + 15 = 127)
  185. MGInset 3,1,24,80,127
  186.  
  187. LOCATE 25,1,0: COLOR 0,9: PRINT SPACE$(80);
  188.  
  189. HelpTextColor% = 15
  190. HelpAttr% = 63
  191.  
  192. TopRow% = 2
  193. Marker% = 99
  194.  
  195. DO
  196.  
  197. HORIZONTALMENU HorzMenu$(),BarSave$,HiLight%,Mouse%,HPointer%,15,23,112,TopRow%,5,Marker%
  198.  
  199. SELECT CASE HPointer%
  200.   CASE 1  'File
  201.     VERTICALMENU VertMenu1$(),VertInfo1$(),VRtrn$,BarSave$,Mouse%,15,HelpTextColor%,HelpAttr%,112,TopRow%,Marker%,HPointer%,23,1,1
  202.     IF LEN(VRtrn$) THEN
  203.       SELECT CASE VRtrn$
  204.         CASE "Quit"
  205.           GOSUB SHOWSELECTIONMADE
  206.           VRtrn$ = "Quit"
  207.       END SELECT
  208.     END IF
  209.   CASE 2  'Edit
  210.     VERTICALMENU VertMenu2$(),VertInfo2$(),VRtrn$,BarSave$,Mouse%,15,HelpTextColor%,HelpAttr%,112,TopRow%,Marker%,HPointer%,23,1,1
  211.     IF LEN(VRtrn$) THEN
  212.       SELECT CASE VRtrn$
  213.         CASE "Open Files"
  214.           GOSUB SHOWSELECTIONMADE
  215.       END SELECT
  216.     END IF
  217.   CASE 3  'Screen
  218.     VERTICALMENU VertMenu3$(),VertInfo3$(),VRtrn$,BarSave$,Mouse%,15,HelpTextColor%,HelpAttr%,112,TopRow%,Marker%,HPointer%,23,1,1
  219.     IF LEN(VRtrn$) THEN
  220.       SELECT CASE VRtrn$
  221.         CASE "Screen Control"
  222.           GOSUB SHOWSELECTIONMADE
  223.       END SELECT
  224.     END IF
  225.   CASE 4  'Help
  226.     VERTICALMENU VertMenu4$(),VertInfo4$(),VRtrn$,BarSave$,Mouse%,15,HelpTextColor%,HelpAttr%,112,TopRow%,Marker%,HPointer%,23,1,1
  227.     IF LEN(VRtrn$) THEN
  228.       SELECT CASE VRtrn$
  229.         CASE "Help Commands"
  230.           GOSUB SHOWSELECTIONMADE
  231.       END SELECT
  232.     END IF
  233. END SELECT
  234.  
  235. HiLight% = 1
  236.  
  237. LOOP UNTIL VRtrn$ = "Quit"
  238.  
  239. DELAY .5
  240. COLOR 7,0
  241. CLS
  242.  
  243. FOR x = 1 TO 25
  244.  PRINT ""
  245. NEXT x
  246.  
  247. END
  248.  
  249. '============================================================================
  250. SHOWSELECTIONMADE:
  251.  
  252. DIM ScreenID    AS STRING
  253. DIM Title       AS STRING
  254. DIM Trow        AS INTEGER
  255. DIM Leftcolumn  AS INTEGER
  256. DIM Bottomrow   AS INTEGER
  257. DIM Rightcolumn AS INTEGER
  258. DIM Attr        AS INTEGER
  259. DIM Shadow      AS INTEGER
  260. DIM Border      AS INTEGER
  261.  
  262. Title$       = "Selection Made Window"
  263. Trow%        = 10
  264. Leftcolumn%  = 25
  265. Bottomrow%   = 14
  266. Rightcolumn% = 57
  267. Attr         = 31 ' (1 x 16) + 15 = 31 for color
  268. Shadow%      = 1
  269. Border%      = 1
  270.  
  271. SaveScreen ScreenID$,TopRow%,LeftColumn%,BottomRow%,RightColumn%,Shadow%
  272. PopWind Title$,Trow%,Leftcolumn%,Bottomrow%,Rightcolumn%,Attr%,Shadow%,Border%
  273. COLOR 14, 9:LOCATE 12,27,0 : PRINT "You Selected " + CHR$(34) + VRtrn$ + CHR$(34)
  274. DELAY 3
  275. RestoreScreen ScreenID$
  276.  
  277. RETURN
  278.  
  279. '============================================================================
  280.