home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9101 / clipper / test1.prg < prev   
Encoding:
Text File  |  1991-06-27  |  14.6 KB  |  312 lines

  1. /*******************************************
  2. * Name: TEST1
  3. * Art:  PROGRAMM
  4. * Autor: FRANK PACHER
  5. * Datum: 15.MAI 1991
  6. * Dateien:    %
  7. * Programme:  SAAMENU()
  8. * Compiling:  /m /b
  9. * Aufruf:
  10. * Glob.Var.:
  11. * Besonderheiten:  NUR ZUR DEMONSTRATION DER
  12. *                  ANWENDUNG VON
  13. *                  <SAAMENU>
  14. *                  UND DER DEMONSTRATION DER
  15. *                  VARIABLEN-DEKLARATION  FÜR
  16. *                  <SAAMENU>
  17. *
  18. *           (c) by F.PACHER
  19. ******************************************************************/
  20. /************ INCLUDEs Dürfen Nicht Fehlen !! *****************************/
  21. #include 'inkey.ch'
  22. #include 'achoice.ch'
  23. #include 'box.ch'
  24. /**************************************************************************/
  25. SetColor('gr+/b,w+/n')
  26. @ 0,0 clear to 24,79
  27. @ 2,0 to 23,79 double
  28. /************** Declaration der MenuÜbergaben ****************/
  29. public grundangaben := Array(1,15)
  30. grundangaben[1,1]:='Grundmenu'                             // MenuName anzeigen
  31. grundangaben[1,2]:=23                                      // Zeile f. MenunamenAnzeige
  32. grundangaben[1,3]:='╡╞'                                    // Begrenzer f.  -"-
  33. grundangaben[1,4]:='rg+/b'                                 // Farbe d. Begrenzer
  34. grundangaben[1,5]:='g/n'                                   // Farbe d. MenuNamen
  35. grundangaben[1,6]:=24                                      // Zeile f. Message
  36. grundangaben[1,7]:=70                                      // max.Laenge d. Message (max.70 Zeich.)
  37. grundangaben[1,8]:='rg+/b'                                 // Farbe d. Message
  38. grundangaben[1,9]:=.T.                                     // Unterbalken anzeigen
  39. grundangaben[1,10]:='gr+/n,r+/w,n,b+/n,w/n'                // Farbe Menu (border=HotKey)
  40. grundangaben[1,11]:='gr+/n'                                // Farbe Unterbalken
  41. grundangaben[1,12]:=.T.                                    // ESC-Abbruch erlaubt
  42. grundangaben[1,14]:=0                                      // Zeile f. MenuAnzeige
  43. grundangaben[1,15]:='<ESC> Zurück'                         //Anzeige ständiges Hotkey
  44.                                                            //(default bei NIL ='F1 Hilfe')
  45. /************** Declaration der UnterMenuPunkte  ***************/
  46.  
  47. /************** Declaration des UnterMenuPunktes lesensuch *********/
  48. lesensuch  := Array(4,12)
  49. lesensuch[2,1] := grundangaben[1,14]+5                   // oben
  50. lesensuch[2,2] := 42                           // links
  51. lesensuch[2,3] := grundangaben[1,14]+12                   // unten
  52. lesensuch[2,4] := 57                           // rechts
  53. lesensuch[2,5] := Array(4)                     // Array mit UnterMenuPunkten
  54.     lesensuch[2,5,1] := 'suchen 1'          // UntermenuPunkte
  55.     lesensuch[2,5,2] := 'wahlsuch 2'          // ....
  56.     lesensuch[2,5,3] := 'die wahlsuche 3 '          // ....
  57.     lesensuch[2,5,4] := 'noch suchen 4'          // ....
  58. lesensuch[2,6] := Array(4)                     // Array mit Message
  59.     lesensuch[2,6,1] := 'Message1'            // Message
  60.     lesensuch[2,6,2] := 'Message2'            // .....
  61.     lesensuch[2,6,3] := 'Message3'            // .....
  62.     lesensuch[2,6,4] := 'Message4'            // .....
  63. lesensuch[2,7] := Array(4)                     // Array mit der Verfuegbarkeit
  64.     lesensuch[2,7,1] := .F.                    // Verfuegbarkeit
  65.     lesensuch[2,7,2] := .F.                    // ......
  66.     lesensuch[2,7,3] := .F.                    // ......
  67.     lesensuch[2,7,4] := .F.
  68. lesensuch[2,8]  := &('{||testudf()}')          // evtl. UDF() bei jeder Taste
  69.                                                // muß als CODEBLOCK-Makro
  70.                                                // definiert sein !!!!
  71.                                                // ODER NIL alles andere geht
  72.                                                // schief
  73. lesensuch[2,9]  := 1                           // Vorauswahl
  74. lesensuch[2,10] := 0                           // Positionierung im Fenster
  75. lesensuch[2,11] := 'g/n,w+/r,n,,w/n+'        // Farbe fuer UnterMenu
  76. lesensuch[2,12] := NIL                         // Array mit weitern Untermenus
  77.  
  78. /************** Declaration des UnterMenuPunktes suchen ***********/
  79. such   := Array(8,12)
  80. such[7,1] := grundangaben[1,14]+3                   // oben
  81. such[7,2] := 32                           // links
  82. such[7,3] := grundangaben[1,14]+11                   // unten
  83. such[7,4] := 50                           // rechts
  84. such[7,5] := Array(4)                     // Array mit UnterMenuPunkten
  85.     such[7,5,1] := 'Suchen 1'          // UntermenuPunkte
  86.     such[7,5,2] := 'Wahl für Suchen 2'+chr(16)          // ....
  87.     such[7,5,3] := 'Nummer 3 suchen'          // ....
  88.     such[7,5,4] := 'Die 4 von Suchen'          // ....
  89. such[7,6] := Array(4)                     // Array mit Message
  90.     such[7,6,1] := 'Message1'            // Message
  91.     such[7,6,2] := 'Message2'            // .....
  92.     such[7,6,3] := 'Message3'            // .....
  93.     such[7,6,4] := 'Message4'            // .....
  94. such[7,7] := Array(4)                     // Array mit der Verfuegbarkeit
  95.     such[7,7,1] := .T.                    // Verfuegbarkeit
  96.     such[7,7,2] := .T.                    // ......
  97.     such[7,7,3] := .T.                    // ......
  98.     such[7,7,4] := .T.
  99. such[7,8]  := NIL                         // evtl. UDF() bei jeder Taste
  100. such[7,9]  := 1                           // Vorauswahl
  101. such[7,10] := 0                           // Positionierung im Fenster
  102. such[7,11] := 'w+/n,w+/r,n,,w/n'        // Farbe fuer UnterMenu
  103. such[7,12] := lesensuch               // Array mit weitern Untermenus
  104.  
  105. such[5,1] := grundangaben[1,14]+3                   // oben
  106. such[5,2] := 32                           // links
  107. such[5,3] := grundangaben[1,14]+11                   // unten
  108. such[5,4] := 50                           // rechts
  109. such[5,5] := Array(4)                     // Array mit UnterMenuPunkten
  110.     such[5,5,1] := 'Suchen 1'          // UntermenuPunkte
  111.     such[5,5,2] := 'Wahl für Suchen 2' + chr(16)  // ....
  112.     such[5,5,3] := 'Nummer 3 suchen'          // ....
  113.     such[5,5,4] := 'Die 4 von Suchen'          // ....
  114. such[5,6] := Array(4)                     // Array mit Message
  115.     such[5,6,1] := 'Message1'            // Message
  116.     such[5,6,2] := 'Message2'            // .....
  117.     such[5,6,3] := 'Message3'            // .....
  118.     such[5,6,4] := 'Message4'            // .....
  119. such[5,7] := Array(4)                     // Array mit der Verfuegbarkeit
  120.     such[5,7,1] := .T.                    // Verfuegbarkeit
  121.     such[5,7,2] := .T.                    // ......
  122.     such[5,7,3] := .T.                    // ......
  123.     such[5,7,4] := .T.
  124. such[5,8]  := NIL                         // evtl. UDF() bei jeder Taste
  125. such[5,9]  := 1                           // Vorauswahl
  126. such[5,10] := 0                           // Positionierung im Fenster
  127. such[5,11] := 'w+/n,w+/r,n,,w/n'        // Farbe fuer UnterMenu
  128. such[5,12] := lesensuch               // Array mit weitern Untermenus
  129.  
  130. /************** Declaration des UnterMenuPunktes Lesen *************/
  131. lesen    :=Array(12)                     // Array mit Untermenu
  132. lesen[1] := grundangaben[1,14]+2                   // oben
  133. lesen[2] := 20                           // links
  134. lesen[3] := grundangaben[1,14]+5                   // unten
  135. lesen[4] := 35                           // rechts
  136. lesen[5] := Array(8)                     // Array mit UnterMenuPunkten
  137.     lesen[5,1] := 'Nur1 Suchen '         // UntermenuPunkte
  138.     lesen[5,2] := 'Lesen2 only'          // ....
  139.     lesen[5,3] := 'Lesen3 only'          // ....
  140.     lesen[5,4] := 'Lesen4 only'          // ....
  141.     lesen[5,5] := 'Lesen5 only' + chr(16)         // ....
  142.     lesen[5,6] := 'Lesen6 only'          // ....
  143.     lesen[5,7] := 'Lesen7 only'          // ....
  144.     lesen[5,8] := 'Lesen8 only'          // ....
  145. lesen[6] := Array(8)                     // Array mit Message
  146.     lesen[6,1] := 'Message1'            // Message
  147.     lesen[6,2] := 'Message2'            // .....
  148.     lesen[6,3] := 'Message3'            // .....
  149.     lesen[6,4] := 'Message4'            // .....
  150.     lesen[6,5] := 'Message5'            // .....
  151.     lesen[6,6] := 'Message6'            // .....
  152.     lesen[6,7] := 'Message7'            // .....
  153.     lesen[6,8] := 'Message8'            // .....
  154. lesen[7] := Array(8)                     // Array mit der Verfuegbarkeit
  155.     lesen[7,1] := .T.                    // Verfuegbarkeit
  156.     lesen[7,2] := .T.                    // ......
  157.     lesen[7,3] := .T.                    // ......
  158.     lesen[7,4] := .T.                    // ......
  159.     lesen[7,5] := .T.                    // ......
  160.     lesen[7,6] := .T.                    // ......
  161.     lesen[7,7] := .T.                    // ......
  162.     lesen[7,8] := .T.                    // ......
  163. lesen[8]  := &('{||testudf()}')          // evtl. UDF() bei jeder Taste
  164. lesen[9]  := 1                           // Vorauswahl
  165. lesen[10] := 0                           // Positionierung im Fenster
  166. lesen[11] := 'g/n,w+/r,n,,w/n+'          // Farbe fuer UnterMenu
  167. lesen[12] := such                        // Array mit weitern Untermenus
  168.  
  169.  
  170. /************** Declaration des UnterMenuPunktes Datei *************/
  171.  
  172. datei    :=Array(12)                     // Array mit Untermenu
  173. datei[1] := grundangaben[1,14]+2                   // oben
  174. datei[2] := 4                           // links
  175. datei[3] := grundangaben[1,14]+5                   // unten
  176. datei[4] := 24                           // rechts
  177. datei[5] := Array(2)                     // Array mit UnterMenuPunkten
  178.     datei[5,1] := 'Datei öffnen'          // UntermenuPunkte
  179.     datei[5,2] := 'Schließe Datei'          // ....
  180. datei[6] := Array(2)                     // Array mit Message
  181.     datei[6,1] := 'Message1'            // Message
  182.     datei[6,2] := 'Message2'            // .....
  183. datei[7] := Array(2)                     // Array mit der Verfuegbarkeit
  184.     datei[7,1] := .T.                    // Verfuegbarkeit
  185.     datei[7,2] := .T.                    // ......
  186. datei[8]  := NIL                         // evtl. UDF() bei jeder Taste
  187. datei[9]  := 1                           // Vorauswahl
  188. datei[10] := 0                           // Positionierung im Fenster
  189. datei[11] := 'g/n,w+/r,n,,w/n+'        // Farbe fuer UnterMenu
  190. datei[12] := NIL                 // Array mit weitern Untermenus
  191.  
  192. /************** Declaration des UnterMenuPunktes Sonstiges *************/
  193.  
  194. sons    :=Array(12)                     // Array mit Untermenu
  195. sons[1] := grundangaben[1,14]+2                   // oben
  196. sons[2] := 28                           // links
  197. sons[3] := grundangaben[1,14]+5                   // unten
  198. sons[4] := 44                           // rechts
  199. sons[5] := Array(2)                     // Array mit UnterMenuPunkten
  200.     sons[5,1] := 'Sonstiges 1'          // UntermenuPunkte
  201.     sons[5,2] := 'Wieder S. 2'          // ....
  202. sons[6] := Array(2)                     // Array mit Message
  203.     sons[6,1] := 'Message1'            // Message
  204.     sons[6,2] := 'Message2'            // .....
  205. sons[7] := Array(2)                     // Array mit der Verfuegbarkeit
  206.     sons[7,1] := .T.                    // Verfuegbarkeit
  207.     sons[7,2] := .T.                    // ......
  208. sons[8]  := NIL                         // evtl. UDF() bei jeder Taste
  209. sons[9]  := 1                           // Vorauswahl
  210. sons[10] := 0                           // Positionierung im Fenster
  211. sons[11] := 'g/n,w+/r,n,,w/n+'        // Farbe fuer UnterMenu
  212. sons[12] := NIL                 // Array mit weitern Untermenus
  213.  
  214. /************** Declaration der HauptMenuPunkte    *************/
  215. hauptmenu          :=Array(4,4)                             // Array mit MenuPunkten
  216. hauptmenu[1,1]:='~D~atei'                       // Name MenuPunkt (~Hotkey~)
  217. hauptmenu[1,2]:='H1-Message'                      // Message
  218. hauptmenu[1,3]:=.T.                               // Aktiv oder gesperrt
  219. hauptmenu[1,4]:=datei                               // Array mit Untermenu
  220.  
  221. hauptmenu[2,1]:='~E~ditieren'                       // wie vor {....
  222. hauptmenu[2,2]:='HP2-Message ist sehr gut !!'       // ....
  223. hauptmenu[2,3]:=.F.
  224. hauptmenu[2,4]:=NIL
  225.  
  226. hauptmenu[3,1]:='~L~esen'
  227. hauptmenu[3,2]:='MP3-Message'
  228. hauptmenu[3,3]:=.T.
  229. hauptmenu[3,4]:=lesen
  230.  
  231. hauptmenu[4,1]:='~S~onstiges'
  232. hauptmenu[4,2]:='MP4-Message'
  233. hauptmenu[4,3]:=.T.
  234. hauptmenu[4,4]:=sons
  235.  
  236.  
  237. /************** Ergaenzungen zur Declaration der MenuÜbergaben ****************/
  238.  
  239. grundangaben[1,13]:=hauptmenu                     // Array mit MenuPunkten
  240.  
  241. /************************* Menu Aufruf ****************/
  242. la :=1
  243.  
  244. ruck:=saamenu(,@grundangaben)
  245.  
  246. @ 0,0 clear to 24,79
  247. for la :=1 to (len(ruck))
  248.     if la =1
  249.         @ 1,10 say 'Es wurde folgende Wahl getroffen :'
  250.         @ 5,0
  251.         ?? 'HAUPTMENU-PUNKT :'
  252.         ? ruck[1]
  253.         inkey(0)
  254.       else
  255.         ?
  256.         ?? 'dessen Unter-PUNKT :'
  257.         ? ruck[la]
  258.         inkey(0)
  259.     endif
  260. next
  261. /************************ END of PROGRAMM ****************************/
  262. /*******************************************
  263. * Name: TEST-UDF()
  264. * Art:  FUNCTION
  265. * Autor: FRANK PACHER
  266. * Datum: 4.MAI 1991
  267. * Dateien:    %
  268. * Programme:  SAAMENU()
  269. * Compiling:  %
  270. * Aufruf:    testudf()
  271. * Glob.Var.:
  272. * Besonderheiten:  NUR ZUR DEMONSTRATION FÜR
  273. *                  UDF() EINBINDUNG IN
  274. *                  <SAAMENU>
  275. *
  276. *               (c) by F.PACHER
  277. ******************************************************************/
  278. function testudf
  279.   @ 5,5 say AModus
  280.   @ 7,5 say APosZeiger
  281.   @ 9,5 say APosRel
  282.   @ 11,5 say 'TASTE -->'
  283.   inkey(0)
  284.   @ 5,5 clear to 12,20
  285. /************************************************************************
  286. * ES IST ZUM BSP. FOLGENDES MÖGLICH :
  287. *
  288. *  if APosZeiger<>5
  289. *     zurueckgebe:= 2 // möglich ist : NIL, 0, 1 oder 2
  290. *   else
  291. *     zurueckgebe:= 1
  292. *  endif
  293. *  if lastkey() = 27
  294. *     zurueckgebe := 0
  295. *  endif
  296. ***************************************************************************
  297.  ODER :
  298. ****************************************************************************/
  299.  
  300.    zurueckgebe := NIL
  301.  
  302. return zurueckgebe   // Hier ist die Rückgabe wie bei Functionen ACHOICE() !
  303.                      // AUßER der RÜCKGABE 3 !!!! NUR NIL, 0 bis 2 MÖGLICH !!
  304.                      // NIL  normal weiter im Text wie gehabt (zB. gehe zum
  305.                      //      nächsten Menupunkt, dessen Anfangsbuchstabe der
  306.                      //      gedrückten Taste entspricht )
  307.                      // 0    Auswahl abbrechen
  308.                      // 1    -"-   beenden gewählten Punkt zurückgeben
  309.                      // 2    -"-   fortsetzenn (zB. mit Cursortasten)
  310. /*********************** Ende of Function ************************/
  311. /************************ END of FILE ****************************/
  312.