home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a070 / 3.ddi / FOXPRO / DEMO / DEMO.PRG < prev    next >
Encoding:
Text File  |  1990-05-04  |  18.1 KB  |  771 lines

  1. ********************************************************
  2. * DEMO - Self running demonstration of FoxPro features *
  3. ********************************************************
  4.  
  5. * Do some cleanup and initialization
  6.  
  7. ON ERROR DO abort
  8. DO cleanup                    && Close everything
  9. DIMENSION setopts[20]        && Need this array to save SET values
  10. DO setenv                    && Save environment and SET options
  11. DO startscreen                && Show startup screen
  12. DO checkfiles                && Make sure data files are present
  13.  
  14. * Open driving database
  15.  
  16. SELECT 24
  17. USE driver
  18. INDEX ON stepno TO driver
  19. INDEX ON stepno TO dmenu FOR stepno - INT(stepno) = 0
  20. SET INDEX TO dmenu, driver
  21. USE buttons IN 25
  22. SET RELATION TO 1 INTO 25
  23.  
  24. * Create color schemes
  25.  
  26. SET COLOR OF SCHEME 12 TO SCHEME 5
  27. cp1 = SCHEME(12,1) + ","
  28. myscheme = ",,," + cp1 + cp1
  29. SET COLOR OF SCHEME 12 TO &myscheme
  30.  
  31. SET COLOR OF SCHEME 13 TO SCHEME 8
  32. cp1 = SCHEME(13,1)
  33. cp2    = SUBSTR(cp1, AT("/", cp1) + 1)
  34. cp3 = cp2 + "/" + cp2 + ","
  35. cp2 = SCHEME(13,2) + ","
  36. cp1 = cp1 + ","
  37. myscheme = cp1 + cp2 + cp3 + cp1 + cp1 + cp2 + cp1
  38. SET COLOR OF SCHEME 13 TO &myscheme
  39.  
  40. cp3 = SCHEME(8,6)
  41.  
  42. * Create Windows
  43.  
  44. DEFINE WINDOW frame FROM 3,3 TO 21,76 DOUBLE COLOR &cp3 SHADOW
  45. DEFINE WINDOW demo FROM 4,40 TO 16,74 DOUBLE COLOR SCHEME 12 TITLE "═" SHADOW
  46. DEFINE WINDOW mbrowse FROM 4,45 TO 19,73 COLOR SCHEME 13 ;
  47.          NONE CLOSE SHADOW TITLE " " 
  48. DEFINE WINDOW btn1 FROM 4,5 TO 7,20 COLOR SCHEME 13 ;
  49.         PANEL CLOSE SHADOW TITLE " "
  50. DEFINE WINDOW btn2 FROM 4,25 TO 7,40 COLOR SCHEME 13 ;
  51.         PANEL CLOSE SHADOW TITLE " "
  52. DEFINE WINDOW btn3 FROM 10,5 TO 13,20 COLOR SCHEME 13 ;
  53.         PANEL CLOSE SHADOW TITLE " "
  54. DEFINE WINDOW btn4 FROM 10,25 TO 13,40 COLOR SCHEME 13 ;
  55.         PANEL CLOSE SHADOW TITLE " "
  56. DEFINE WINDOW btn5 FROM 16,5 TO 19,20 COLOR SCHEME 13 ;
  57.         PANEL CLOSE SHADOW TITLE " "
  58. DEFINE WINDOW btn6 FROM 16,25 TO 19,40 COLOR SCHEME 13 ;
  59.         PANEL CLOSE SHADOW TITLE " "
  60. STORE 0 TO timelimit, lastclick
  61.  
  62. * Save locations of "buttons" (to test for mouse clicks)
  63.  
  64. DIMENSION wlims[7,4]
  65.  
  66. FOR i = 1 TO 6
  67.     this_wind = "btn"+CHR(i + 48)
  68.     wlims[i,1] = WLROW(this_wind)
  69.     wlims[i,2] = WLCOL(this_wind)
  70.     wlims[i,3] = wlims[i,1] + WROWS(this_wind) + 1
  71.     wlims[i,4] = wlims[i,2] + WCOLS(this_wind) + 1
  72. ENDFOR
  73. wlims[7,1] = WLROW('mbrowse')
  74. wlims[7,2] = WLCOL('mbrowse')
  75. wlims[7,3] = wlims[7,1] + WROWS('mbrowse') + 1
  76. wlims[7,4] = wlims[7,2] + WCOLS('mbrowse') + 1
  77.  
  78. * Let the "menu" take control
  79.  
  80. DO WHILE .T.
  81.     DO sethotkeys
  82.     ON KEY LABEL MOUSE DO mousehit
  83.     ON KEY LABEL ENTER KEYBOARD CHR(23)
  84.     DEFINE WINDOW frame FROM 3,3 TO 21,76 DOUBLE COLOR &cp3 SHADOW
  85.     SHOW WINDOW frame
  86.     MODIFY MEMO buttons->b1 NOEDIT NOWAIT WINDOW btn1
  87.     MODIFY MEMO buttons->b2 NOEDIT NOWAIT WINDOW btn2
  88.     MODIFY MEMO buttons->b3 NOEDIT NOWAIT WINDOW btn3
  89.     MODIFY MEMO buttons->b4 NOEDIT NOWAIT WINDOW btn4
  90.     MODIFY MEMO buttons->b5 NOEDIT NOWAIT WINDOW btn5
  91.     MODIFY MEMO buttons->b6 NOEDIT NOWAIT WINDOW btn6
  92.     BROWSE FIELDS check:h=" ", topic:h="    FoxPro Topics" NOMODIFY ;
  93.             NOMENU NOAPPEND NODELETE WINDOW mbrowse FREEZE topic TIMEOUT 30
  94.     DEACTIVATE WINDOW mbrowse
  95.     CLOSE MEMO buttons->b1
  96.     CLOSE MEMO buttons->b2
  97.     CLOSE MEMO buttons->b3
  98.     CLOSE MEMO buttons->b4
  99.     CLOSE MEMO buttons->b5
  100.     CLOSE MEMO buttons->b6
  101.     RELEASE WINDOW frame
  102.     ON KEY
  103.     IF READKEY() = 12
  104.         EXIT
  105.     ENDIF
  106.     DO rundemo
  107. ENDDO
  108.  
  109. * Cleanup and go home
  110.  
  111. DO restenv
  112. ON ERROR
  113. DO cleanup
  114. RETURN
  115.  
  116. ****************************************************************
  117. * RUNDEMO - This is the controlling loop for a menu selection  *
  118. ****************************************************************
  119. PROCEDURE rundemo
  120. SET ORDER TO 2                && Let's "see" all of the driver records
  121. ok = .t.
  122.  
  123. GO TOP
  124. SCAN FOR check = '√'        && Look for selected topics
  125.     this_step = INT(driver.stepno)
  126.     this_topic = ALLTRIM(driver.topic)
  127.     inloop = .F.
  128.     DO WHILE INT(driver.stepno) = this_step .AND. ok    && Process all substeps
  129.     
  130.         inloop = .T.
  131.         STORE 0 TO cnt, counter
  132.         RESTORE FROM MEMO driver.memvars ADDITIVE
  133.         CLEAR MACROS
  134.         RESTORE MACROS FROM MEMO driver.macro
  135.         * DO the starting program
  136.     
  137.         IF LEN(startprog) <> 0
  138.             SET MOUSE OFF
  139.             DO &startprog
  140.             SET MOUSE ON
  141.         ENDIF
  142.  
  143.         * Prepare the message window
  144.  
  145.         IF cnt <> 0  
  146.             
  147.             * Redefine the message window
  148.             
  149.             rrow = msgrow + msgheight + 1
  150.             rcol = msgcol + msgwidth + 1
  151.             DEFINE WINDOW demo FROM msgrow,msgcol TO rrow,rcol ;
  152.                     DOUBLE COLOR SCHEME 12 SHADOW ;
  153.                     TITLE PADC(this_topic, LEN(this_topic)+2) 
  154.         ENDIF
  155.  
  156.         * Cycle through all the micro steps
  157.                 
  158.         DO WHILE ok .AND. (counter < cnt)    
  159.             counter = counter + 1
  160.             IF counter <= cnt
  161.             
  162.                 = SYS(2002)
  163.                 ontop = windname(upper(wontop()))
  164.                 
  165.                 * Display the message
  166.                 
  167.                 ACTIVATE WINDOW demo
  168.                 CLEAR
  169.                 ?? msg[counter] FUNCTION "v"+ALLTRIM(STR(WCOLS()-2)) AT 1
  170.                 WAIT "" TIMEOUT OCCURS(' ', msg[counter])/4 + 1
  171.                 
  172.                 * Should we keep it around?
  173.                 
  174.                 IF .NOT. sticky
  175.                     DEACTIVATE WINDOW demo
  176.                 ELSE
  177.                     IF LEN(ontop) <> 0
  178.                         SHOW WINDOW &ontop
  179.                     ENDIF
  180.                 ENDIF
  181.                 
  182.                 * If ESCAPE not pressed, play the macro
  183.                 
  184.                 = SYS(2002, 1)
  185.                 ok = IIF(LASTKEY() = 27, .F., .T.)
  186.                 IF ok
  187.                     CLEAR TYPEAHEAD
  188.                     this_macro = "M"+ALLTRIM(STR(counter))
  189.                     SET MOUSE OFF
  190.                     PLAY MACRO &this_macro 
  191.                     SUSPEND    
  192.                     CLEAR TYPEAHEAD
  193.                     SET MOUSE ON
  194.                 ENDIF
  195.             ENDIF
  196.         ENDDO
  197.  
  198.         * DO the ending program
  199.  
  200.         IF LEN(endprog) <> 0
  201.             SET MOUSE OFF
  202.             DO &endprog
  203.             SET MOUSE ON
  204.         ENDIF
  205.         
  206.         SKIP                    && Get another substep for this topic
  207.     ENDDO                        && Finished a topic
  208.     IF inloop
  209.         SKIP -1
  210.         DEACTIVATE WINDOW demo
  211.         IF .NOT. ok
  212.             EXIT
  213.         ENDIF
  214.     ENDIF
  215. ENDSCAN
  216.  
  217. GO TOP
  218. SET ORDER TO 1            && Let's "see" only the main steps
  219.  
  220. DO WHILE .T.
  221.     ontop = windname(UPPER(WONTOP()))
  222.     IF ontop <> 'SCREEN'
  223.         RELEASE WINDOW &ontop
  224.     ELSE
  225.         EXIT
  226.     ENDIF
  227. ENDDO
  228. RETURN
  229.  
  230. *************************************************
  231. * CLEANUP - Close everything down                *
  232. *************************************************
  233.  
  234. PROCEDURE cleanup
  235. CLEAR MACROS
  236. CLEAR ALL
  237. CLEAR
  238. ON KEY
  239. RETURN
  240.  
  241. ******************************************
  242. * ABORT - Error occurred: Just shut down *
  243. ******************************************
  244. PROCEDURE abort
  245. ON ERROR
  246. CLEAR TYPEAHEAD
  247. CLEAR MEMORY            && Just in case error is insufficient memory
  248. DO CASE
  249. CASE ERROR() = 1
  250.     errmsg = "Unable to find all of the demo files."
  251. CASE ERROR() = 43 .OR. ERROR() = 0
  252.     errmsg = "Insufficient memory to operate FoxPro demo."
  253. OTHERWISE
  254.     errmsg = MESSAGE()
  255. ENDCASE
  256. WAIT errmsg WINDOW TIMEOUT 10
  257. DO cleanup
  258. QUIT
  259.  
  260. *************************************************
  261. * SETENV - Set the environment for the demo        *
  262. *************************************************
  263.  
  264. PROCEDURE setenv
  265. IF SET("TALK") = "ON"
  266.     SET TALK OFF
  267.     setopts[1] = "ON"
  268. ELSE
  269.     setopts[1] = "OFF"
  270. ENDIF
  271. setopts[2] = SET("SAFETY")
  272. setopts[3] = SET("ECHO")
  273. setopts[4] = SET("DEBUG")
  274. setopts[5] = SET("NOTIFY")
  275. setopts[6] = SET("RESOURCE")
  276. setopts[7] = SET("RESOURCE", 1)
  277. setopts[8] = SET("ESCAPE")
  278. setopts[9] = SET("COMPATIBLE")
  279. setopts[10] = _wrap
  280.  
  281. SET SAFETY OFF
  282. SET ECHO OFF
  283. SET DEBUG OFF
  284. SET NOTIFY OFF
  285. SET RESOURCE OFF
  286. SET RESOURCE TO demo
  287. SET ESCAPE OFF
  288. SET COMPATIBLE OFF
  289. _wrap = .F.
  290. SAVE MACROS TO demo
  291. KEYBOARD "RESUME"+CHR(13)
  292. SUSPEND                && Make sure that command window is created
  293. HIDE WINDOW ALL
  294. RETURN
  295.  
  296. *************************************************
  297. * RESTENV - Restore the original environment    *
  298. *************************************************
  299.  
  300. PROCEDURE restenv
  301. SET RESOURCE OFF
  302. USE demo IN 24
  303. PACK 
  304. USE
  305. SET SAFETY &setopts[2]
  306. SET ECHO &setopts[3]
  307. SET DEBUG &setopts[4]
  308. SET NOTIFY &setopts[5]
  309. SET RESOURCE TO &setopts[7]
  310. SET RESOURCE &setopts[6]
  311. SET ESCAPE &setopts[8]
  312. SET COMPATIBLE &setopts[9]
  313. _wrap = setopts[10]
  314. SET TALK &setopts[1]
  315. RESTORE MACROS FROM demo
  316. RETURN
  317.  
  318. *****************************************************
  319. * STARTSCREEN - Show startup screen                    *
  320. *****************************************************
  321.  
  322. PROCEDURE startscreen
  323. DEFINE WINDOW SCREEN FROM 0,0 TO 24,79 NONE CLOSE COLOR SCHEME 1
  324. ACTIVATE WINDOW SCREEN
  325. TEXT
  326.                                                                               
  327.                                                                               
  328.                                                                               
  329.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀                    ▀▀▀▀▀▀▀▀▀▀▀                               
  330.    ▀▀         ▀▀▀                      ▀▀       ▀▀                             
  331.    ▀▀           ▀                      ▀▀        ▀▀                            
  332.    ▀▀                                  ▀▀        ▀▀                            
  333.    ▀▀          ▀▀▀      ▀▀▀▀▀  ▀▀▀▀▀   ▀▀       ▀▀  ▀▀▀   ▀▀▀▀         ▀▀▀     
  334.    ▀▀▀▀▀    ▀▀     ▀▀     ▀▀    ▀▀     ▀▀▀▀▀▀▀▀▀      ▀▀ ▀▀   ▀▀    ▀▀     ▀▀  
  335.    ▀▀      ▀▀       ▀▀     ▀▀  ▀▀      ▀▀             ▀▀▀          ▀▀       ▀▀ 
  336.    ▀▀     ▀▀         ▀▀     ▀▀▀        ▀▀             ▀▀          ▀▀         ▀▀
  337.    ▀▀      ▀▀       ▀▀     ▀▀ ▀▀       ▀▀             ▀▀           ▀▀       ▀▀ 
  338.    ▀▀       ▀▀     ▀▀     ▀▀   ▀▀      ▀▀             ▀▀            ▀▀     ▀▀  
  339.  ▀▀▀▀▀▀▀       ▀▀▀      ▀▀▀▀▀  ▀▀▀▀  ▀▀▀▀▀▀         ▀▀▀▀▀▀             ▀▀▀     
  340. ENDTEXT
  341. ? PADC(VERSION()+' (c) Fox Software 1989,1990, Serial # '+SYS(9), 79)    
  342. RETURN
  343.  
  344. *************************************
  345. * MOUSEHIT - Mouse click handler    *
  346. *************************************
  347. PROCEDURE mousehit
  348.  
  349. * See if it's outside the browse window
  350.  
  351. myrow = mrow("SCREEN")
  352. mycol = mcol("SCREEN")
  353. FOR i = 1 TO 6
  354.     IF myrow >= wlims[i,1] .AND. myrow <= wlims[i,3] .AND. ;
  355.        mycol >= wlims[i,2] .AND. mycol <= wlims[i,4]
  356.         EXIT
  357.     ENDIF
  358. ENDFOR
  359.  
  360. IF i <> 7
  361.     = INKEY("M")                && Get rid of mouse event
  362.     timelimit = 0
  363. ENDIF
  364.  
  365. DO CASE
  366. CASE i = 1                        && Demo help screen
  367.     DO demohelp
  368. CASE i = 2                        && "Select/Deselect" button
  369.     DO checkit
  370. CASE i = 3                        && "Check None"
  371.     DO checknone
  372. CASE i = 4                        && "See Demo" button
  373.     KEYBOARD CHR(13)
  374. CASE i = 5                        && "Check All"
  375.     DO checkall            
  376. CASE i = 6                        && "Exit Demo" button
  377.     KEYBOARD CHR(27)
  378. CASE i = 7                        && "Topics menu"
  379.     IF SECONDS() <= timelimit .AND. lastclick = myrow     && Must be a double click
  380.         = INKEY("M")            && Get rid of the event
  381.         DO checkit
  382.         timelimit = 0
  383.     ELSE                            && Start anew
  384.         timelimit = SECONDS() + _DBLCLICK
  385.         lastclick = myrow
  386.     ENDIF
  387. ENDCASE
  388. RETURN
  389.  
  390. *************************************
  391. * CHECKIT - Select/Deselect a topic    *
  392. *************************************
  393. PROCEDURE checkit
  394. DO clearhotkeys
  395. REPLACE check WITH IIF(check = '√', ' ', '√')
  396. SKIP 1
  397. SKIP -1
  398. DO sethotkeys
  399. RETURN
  400.  
  401. *************************************
  402. * CHECKNONE - Deselect all topics    *
  403. *************************************
  404. PROCEDURE checknone
  405. DO clearhotkeys
  406. saverec = RECNO()
  407. REPLACE ALL check WITH ' ' FOR stepno - INT(stepno) = 0 WHILE stepno < 90
  408. GOTO saverec
  409. DO sethotkeys
  410. RETURN
  411.  
  412. *********************************
  413. * CHECKALL - Select all topics    *
  414. *********************************
  415. PROCEDURE checkall
  416. DO clearhotkeys
  417. saverec = RECNO()
  418. REPLACE ALL check WITH '√' FOR stepno - INT(stepno) = 0 WHILE stepno < 90
  419. GOTO saverec
  420. DO sethotkeys
  421. RETURN
  422.  
  423. *************************************************************
  424. * WINDNAME - Make window name valid for use in a command    *
  425. *************************************************************
  426. FUNCTION windname
  427. PARAMETER ontop
  428. n = LEN(ontop)
  429. FOR i = 1 TO n
  430.     c = SUBSTR(ontop,i,1)
  431.     IF c < 'A' .OR. c > 'Z'
  432.         EXIT
  433.     ENDIF
  434. ENDFOR
  435. RETURN LEFT(ontop, i - 1)
  436.  
  437. *************************************************************
  438. * CHECKFILES - Make sure all necessary files are present    *
  439. *************************************************************
  440. PROCEDURE checkfiles
  441. USE custdemo
  442. INDEX ON cust_id TO cus_id
  443. USE paydemo
  444. INDEX ON cust_id TO pay_cus
  445. USE helpdemo
  446. USE
  447. RETURN
  448.  
  449. *************************************************
  450. * DEMOHELP - A little help on running the demo    *
  451. *************************************************
  452. PROCEDURE demohelp
  453. DO clearhotkeys
  454. DEFINE WINDOW demo FROM 2,3 TO 22,76 DOUBLE COLOR SCHEME 12 TITLE " About the FoxPro Demo " SHADOW
  455. ACTIVATE WINDOW demo
  456. TEXT
  457.     This self running FoxPro demo program is written entirely in
  458.     FoxPro.  It combines the use of standard commands and functions
  459.     with the keyboard macro facility.  See DEMO.PRG and DRIVER.DBF.
  460.     
  461.     To Select/Deselect topics:   Double click on Topic, or
  462.                                  Press the SPACEBAR, or
  463.                                  Click the Select button, or
  464.                                  Click the Select None button, or
  465.                                  Click the Select All button
  466.  
  467.     To see topics demonstrated:  Press ENTER, or
  468.                                  Click the See Demo button
  469.  
  470.     To exit the demo program:    Press ESCAPE, or
  471.                                  Click the Exit button
  472.                                 
  473.     To interrupt demonstration:  Press ESCAPE at any explanatory note
  474. ENDTEXT
  475.  
  476. = INKEY(0, 'MH')
  477. DEFINE WINDOW demo FROM 4,40 TO 16,74 DOUBLE COLOR SCHEME 12 TITLE "═" SHADOW
  478. DO sethotkeys
  479. RETURN
  480.  
  481. ********************************************
  482. * SETHOTKEYS - Define some of the hot keys *
  483. ********************************************
  484. PROCEDURE sethotkeys
  485. ON KEY LABEL SPACEBAR DO checkit
  486. ON KEY LABEL F1 DO demohelp
  487. ON KEY LABEL F2 DO checknone
  488. ON KEY LABEL F3 DO checkall
  489. RETURN
  490.  
  491. **********************************************************************
  492. * CLEARHOTKEYS - Clear hot keys to prevent calls from within hot key *
  493. *                routines.                                           *
  494. **********************************************************************
  495. PROCEDURE clearhotkeys
  496. CLEAR TYPEAHEAD
  497. ON KEY LABEL SPACEBAR
  498. ON KEY LABEL F1
  499. ON KEY LABEL F2
  500. ON KEY LABEL F3
  501. RETURN
  502.  
  503. *************************************
  504. * All the Start and End Programs    *
  505. *************************************
  506. PROCEDURE start9
  507. CREATE VIEW demo
  508. msg[11] = RECNO()
  509. CLOSE ALL
  510. helpfile = SYS(2004)+"FOXHELP"
  511. SET HELP TO &helpfile
  512. SELECT A
  513. RETURN
  514.  
  515. PROCEDURE end9
  516. helpfile = SYS(2004)+"FOXHELP"
  517. SET HELP TO &helpfile
  518. SELECT 24
  519. SET VIEW TO demo
  520. GO msg[11]
  521. RETURN
  522.  
  523. PROCEDURE start8
  524. SELECT A
  525. RETURN
  526.  
  527. PROCEDURE end8
  528. USE
  529. SELECT 24
  530. RETURN
  531.  
  532. PROCEDURE start7
  533. SELECT A
  534. USE custdemo
  535. SET FIELDS TO cust_id, company, address1, city, state, zip
  536. RETURN
  537.  
  538. PROCEDURE end7
  539. USE
  540. SET FIELDS OFF 
  541. SELECT 24
  542. RETURN
  543.  
  544. PROCEDURE start6
  545. SELECT A
  546. USE custdemo
  547. RETURN
  548.  
  549. PROCEDURE end6
  550. USE
  551. SELECT 24
  552. RETURN
  553.  
  554. PROCEDURE start5
  555. CREATE VIEW demo
  556. msg[11] = RECNO()
  557. CLOSE ALL
  558. SELECT A
  559. RETURN
  560.  
  561. PROCEDURE start4
  562. SET DEBUG ON
  563. RETURN
  564.  
  565. PROCEDURE end4
  566. IF .NOT. ok                && ESCAPE was pressed
  567.     SET DEBUG OFF
  568.     RETURN
  569. ENDIF
  570.  
  571. DECLARE a[10]
  572. SET TALK OFF
  573. * Fill an array with random numbers
  574. FOR i = 1 TO 10
  575.     a[i] = RAND() * 100
  576. NEXT
  577. * Sort the numbers with a Bubble Sort.
  578. next2last = 9
  579. sorted = .f.
  580. DO WHILE !sorted        && Keep making passes until 
  581.                         && the array is sorted.
  582.     sorted = .t.        && Assume the best.
  583.     FOR probe = 1 to next2last
  584.                         && swap out of order items
  585.         IF (a[probe] > a[probe+1])
  586.             temp = a[probe+1]
  587.             a[probe+1] = a[probe]
  588.             a[probe] = temp
  589.             sorted = .f.    && and make AT LEAST 
  590.                             && one more pass
  591.         ENDIF
  592.     NEXT
  593.     next2last = next2last - 1
  594. ENDDO
  595. SET DEBUG OFF    
  596. RETURN    
  597.  
  598. PROCEDURE start3
  599. COPY FILE demo.prg TO mydemo.prg
  600. RETURN
  601.  
  602. PROCEDURE end3
  603. ontop = windname(UPPER(WONTOP()))
  604. IF ontop = "MYDEMO"
  605.     RELEASE WINDOW &ontop
  606. ENDIF
  607. DELETE FILE mydemo.prg
  608. RETURN
  609.  
  610. PROCEDURE start2
  611. SELECT A
  612. USE custdemo
  613. GO 43 
  614. REPLACE company WITH "Forest Dry Cleaning"
  615. GO 31
  616. REPLACE contact WITH "Melissa Thompson", comments WITH ""
  617. BROW WIDTH 28 NOWAIT NORMAL
  618. RETURN
  619.  
  620. PROCEDURE end2
  621. USE
  622. SELECT 24
  623. RETURN
  624.  
  625. PROCEDURE start1
  626. CREATE VIEW demo
  627. msg[11] = RECNO()
  628. CLOSE ALL
  629. SELECT A
  630. RETURN
  631.  
  632. PROCEDURE end1
  633. SET VIEW TO demo
  634. GO msg[11]
  635. RETURN
  636.  
  637. PROCEDURE start0_2
  638. SET DEBUG ON
  639. SELECT A
  640. USE custdemo
  641. RETURN
  642.  
  643. PROCEDURE end0_2
  644. SET DEBUG OFF
  645. USE
  646. SELECT 24
  647. DO startscreen
  648. RETURN
  649.  
  650. PROCEDURE start0_1
  651. SELECT A
  652. RETURN
  653.  
  654. PROCEDURE end0_1
  655. USE
  656. SELECT B
  657. USE
  658. SELECT 24
  659. RETURN
  660.  
  661. PROCEDURE start0
  662. statline ="Command Line     │< :>│                       │                   │Ins   │      "
  663. statline = STUFF(statline, 20, 1, LEFT(SYS(5),1))
  664. oldcolor = SET("COLOR")
  665. SET COLOR TO W/N, N/W
  666. CLEAR
  667. @ 24,0 say PADC("Enter a command", 80)
  668. @ 22,0 GET statline
  669. CLEAR GETS
  670. @ 20,0 SAY ". TYPE question.txt"
  671. WAIT "** What would you wish for in the ULTIMATE microcomputer database system? **" TIMEOUT 5
  672. SET COLOR TO &oldcolor
  673. CLEAR
  674. SELECT A
  675. USE custdemo
  676. USE paydemo INDEX pay_cus IN B
  677. SET RELATION TO cust_id INTO B
  678. RETURN
  679.  
  680. PROCEDURE end0
  681. IF .NOT. ok
  682.     SELECT 24
  683.     RETURN
  684. ENDIF
  685.  
  686. DIMENSION wpos(200,2)
  687. hd = 7
  688. vd = 2
  689. n = 0
  690. k = 0
  691. clear
  692. ok = .t.
  693. ON ERROR ok = .f.
  694. for i = 1 to 24 step vd
  695.     for j = 1 to 75 step hd
  696.         n = n + 1
  697.         name = "W"+alltrim(str(n))
  698.         wpos(n,1) = i
  699.         wpos(n,2) = j+k
  700.         do case
  701.         case mod(n,4)=0
  702.             defi windo &name from i,j+k to i+4,j+k+5 color scheme mod(n,11)+1 ;
  703.                 float grow zoom close shadow " "," "," "," ",;
  704.                 chr(254),chr(240)," ",chr(249)," "," "," "," "," "," "," "," "
  705.         case mod(n,4)=1
  706.             defi windo &name from i,j+k to i+4,j+k+5 color scheme mod(n,11)+1 ;
  707.                 float grow zoom close shadow
  708.         case mod(n,4)=2
  709.             defi windo &name from i,j+k to i+4,j+k+5 color scheme mod(n,11)+1 ;
  710.                 float grow zoom close shadow double
  711.         case mod(n,4)=3
  712.             defi windo &name from i,j+k to i+4,j+k+5 color scheme mod(n,11)+1 ;
  713.                 float grow zoom close shadow "═","═","║","║",;
  714.                 "╔","╗","╚","╝","═","═","│","│","╒","╕","╘","╛"
  715.         endcase
  716.         IF .NOT. ok
  717.             n = n - 1
  718.             EXIT
  719.         ENDIF
  720.         acti windo &name
  721.         ?? "Fox"
  722.         ? "Pro"
  723.         ? str(n,3)
  724.     endfor
  725.     IF .NOT. ok
  726.         EXIT
  727.     ENDIF
  728.     k = k + 2
  729.     if k > 8
  730.         k = 0
  731.     endif
  732. endfor
  733. ON ERROR DO abort
  734. do hidewind
  735.  
  736. for i = 1 to n
  737.     name = "W"+alltrim(str(i))
  738.     activate window &name
  739.     hide window &name
  740. endfor
  741. do showwind
  742. do closewind
  743.  
  744. SELECT 24
  745. return
  746.  
  747. procedure closewind
  748. for i = n to 1 step -1
  749.     name = "W"+alltrim(str(i))
  750.     release window &name
  751. endfor
  752. return
  753.  
  754. procedure hidewind
  755. for i = 1 to n
  756.     name = "W"+alltrim(str(i))
  757.     hide window &name
  758. endfor
  759. return
  760.  
  761. procedure showwind
  762. for i = 1 to n
  763.     name = "W"+alltrim(str(i))
  764.     show window &name
  765. endfor
  766. return
  767.  
  768.     
  769.  
  770.  
  771.