home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / database / rodent.zip / MDEMO.PRG next >
Text File  |  1988-08-31  |  4KB  |  183 lines

  1. *** MDEMO.PRG
  2. *** Demonstrate Mouse Interface for Clipper
  3. *** Copyright 1988 - Lawrence Edward Nussbaum, All Rights Reserved
  4. *** Source BDW207, Compuserve 76137,361
  5. ***
  6. *** Mouse Interface Functions In RODENT.OBJ
  7. ***
  8. *** ISMOUSE()     - Returns .T. if Mouse Driver Installed
  9. ***                          .F. if No Mouse Driver
  10. ***
  11. ***    MRESET()     - Returns # of Buttons On Mouse,
  12. ***                          0 if no Mouse
  13. ***
  14. ***    MSHOW()        - Displays Mouse Cursor, No Return Value
  15. ***
  16. ***    MHIDE()        - Hides Mouse Cursor, No Return Value
  17. ***
  18. ***    MROW()        - Returns Current Mouse Cursor Row (0-24),
  19. ***
  20. ***    MCOL()        - Returns Current Mouse Cursor Column (0-79)
  21. ***
  22. ***    MLEFT()        - Returns .T. if Button is Depressed
  23. ***    MRIGHT()              .F. if Button is Released
  24. ***    MCENTER()
  25. ***
  26. ***    MTOPOS(<row>, <col>)
  27. ***            - Moves Mouse Cursor Position to Row, Col
  28. ***
  29. ***    MAREA(<uprow>, <upcol>, <lwrrow>, <lwrcol>)
  30. ***            - Limits Mouse Cursor Movement to Area Specified
  31. ***
  32. *** NOTE: VERY IMPORTANT! - These functions do NO Error Checking
  33. ***
  34. ****************************************************************
  35.  
  36. * set up vars
  37. single = "┌─┐│┘─└│"                    && box drawing characters
  38. double = "╔═╗║╝═╚║"
  39.  
  40. store "" to string, laststring        && keyboard input
  41.  
  42. store .F. to mbll, mbcl, mbrl, mbbl    && Prime Last Button Press Info Holders
  43. ctr = 0                                && track passes in loop
  44.  
  45. **--> CHECK FOR MOUSE DRIVER
  46. ? "Checking For Mouse Driver..."
  47. IF ! ISMOUSE()
  48.     ? "Mouse Driver Not Found"
  49.     return
  50. endif
  51. ?? "Present"
  52.  
  53. **--> RESET MOUSE DRIVER
  54. ? "Resetting Mouse Driver..."
  55. if MRESET() = 0
  56.     ? "Mouse Driver Not Active"
  57.     return
  58. endif
  59.  
  60. * shut off Clipper cursor
  61. set cursor off
  62.  
  63. * make screen
  64. set color to W/N
  65. clear
  66. set color to N/W
  67. @ 12,31,14,49 box single+" "
  68. @ 13,38 say "QUIT"
  69. set color to W/N
  70. * set up status line
  71. @ 0,0 say "Row:"
  72. @ 0,10 say "Column:"
  73. @ 1,0 say  "Left Button:"
  74. @ 1,30 say  "Ctr Button:"
  75. @ 1,59 say "Right Button:"
  76. @ 24,0 say "Typed Text:"
  77. * save base screen
  78. save screen to mscrn
  79.  
  80. **--> DON'T ALLOW MOUSE CURSOR ON STATUS LINE, DISPLAY LIMIT BOX
  81. MAREA(2,0,23,79)
  82. @ 2,0,23,79 box double
  83.  
  84. **--> PLACE MOUSE CURSOR
  85. MTOPOS(10,39)
  86. **--> SHOW CURSOR
  87. MSHOW()
  88.  
  89. do while .T.
  90.  
  91.     * update & display counter
  92.     ctr = ctr+1
  93.     @ 0,69 say ctr
  94.  
  95.     **--> GET MOUSE INFORMATION
  96.     mr = MROW()
  97.     mc = MCOL()
  98.     mbl = MLEFT()
  99.     mbc = MCENTER()
  100.     mbr = MRIGHT()
  101.     mbb = mbl .and. mbr        && Status of Both Buttons Combined
  102.  
  103.     * get keyboard key (if any)
  104.     xkey = inkey()
  105.  
  106.     * display info
  107.     @ 0,4 say str(mr,2)
  108.     @ 0,17 say str(mc,2)
  109.     @ 1,12 say if(mbl,"Pressed ","Released")
  110.     @ 1,41 say if(mbc,"Pressed ","Released")
  111.     @ 1,72 say if(mbr,"Pressed ","Released")
  112.     if ! (string == laststring)     && don't flicker
  113.         @ 24,11 say string + space(69-len(string))
  114.         laststring = string
  115.     endif
  116.  
  117.     do case
  118.         
  119.         case xkey > 31    && check for keyboard input
  120.             * built string from keyboard
  121.             string = string + chr(xkey)
  122.             loop
  123.  
  124.         case xkey = 8    && backspace
  125.             string = left(string,len(string)-1)
  126.             loop
  127.     
  128.         case (!mbb .and. mbbl) .or. xkey = 1    && both buttons released or Home Hit
  129.             if MR > 11 .and. MR <15 .and. MC > 30 .and. MC < 50
  130.                 * both buttons released while in exit box
  131.                 exit
  132.             endif
  133.             **--> HIDE MOUSE CURSOR WHEN RESTORING SCREEN
  134.             MHIDE()
  135.             restore screen from mscrn
  136.             @ 2,0,23,79 box double
  137.             MAREA(2,0,23,79)
  138.             MTOPOS(10,39)
  139.             MSHOW()
  140.         
  141.         case (!mbl .and. mbll) .or. xkey = 19    && Left Button Released or Left Arrow Hit
  142.             MHIDE()
  143.             restore screen from mscrn
  144.             @ 2,0,23,39 box double
  145.             MAREA(2,0,23,39)
  146.             MTOPOS(12,20)
  147.             MSHOW()
  148.         
  149.         case (!mbr .and. mbrl) .or. xkey = 4    && Right Button Released or Right Arrow Hit
  150.             MHIDE()
  151.             restore screen from mscrn
  152.             @ 2,40,23,79 box double
  153.             MAREA(2,40,23,79)
  154.             MTOPOS(12,60)
  155.             MSHOW()
  156.  
  157.         case xkey = 27
  158.             exit
  159.  
  160.     endcase
  161.  
  162.     **--> Save Button Info For Next Pass
  163.     mbll = mbl
  164.     mbcl = mbc
  165.     mbrl = mbr
  166.     mbbl = mbb
  167.  
  168. enddo
  169.  
  170. **--> Turn Off Mouse Cursor, clean up screen
  171. MHIDE()
  172.  
  173. * turn back on Clipper cursor, closeing screen
  174. set cursor on
  175. clear
  176. ? "Total Passes in Loop:",ctr
  177.  
  178. **--> CLEAR MOUSE DRIVER
  179. MRESET()
  180.  
  181. RETURN
  182. *** EOF
  183.