home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 15 / CD_ASCQ_15_070894.iso / news / 770 / fast315 / fastdemo / demo.prg < prev    next >
Text File  |  1994-06-05  |  29KB  |  868 lines

  1. #include "fast.ch"
  2. #include "inkey.ch"
  3.  
  4.  
  5.  
  6. /********************************************************************
  7. *      Fast Library For Clipper Demo Program
  8. *
  9. *      (c) 1992-94 Manu Roibal
  10. *
  11. *      Compile with : clipper demo /A /M /N /W
  12. *
  13. *      Link with    : rtlink FI demo LIB fast
  14. *             or    : blinker FI demo LIB fast
  15. */
  16.  
  17.  
  18. Function Main()
  19. Local nX := Col ()
  20. Local nY := Row ()
  21. Local cColor  := SetColor()
  22. Local nCursor := SetCursor( 0 )
  23. Local nInd
  24. Local aE
  25.     Set ( _SET_SCOREBOARD, .F. )
  26.     SetColor ( "W+/B" )
  27.     BoxWarning( { "Fast Library For Clipper", ;
  28.                   "", ;
  29.                   "The best library ever created for Clipper", ;
  30.                   "", ;
  31.                   "(C) 1992-94 Manu Roibal", ;
  32.                   "", ;
  33.                   "De omni re scibili et quibusdam aliis" } )
  34.     Pantalla( .T. )
  35.     Banner()
  36.     Pantalla( .F. )
  37.     aE := GaugeNew ( 8, "Fast Library For Clipper. L'enfant Terrible", "B" )
  38.     For nInd := 1 To 30
  39.       GaugeUpdate( aE, 1 / 30 )
  40.       Delay( 0.01 )
  41.     Next
  42.     SetFont ( "Roman.Fon" )
  43.     Screen ( "┼", "B+/B" )
  44.     Clock( .T., 0, 71, "B+/B" )
  45.     SetColor ( "N/BG,N/W" )
  46.     NewBox ( 3, 22, 22, 59, "Fast Library Demo Program", "╔═╗║╝═╚║ ", .T. )
  47.     @  4, 59 SAY CHR( 24 )
  48.     @ 21, 59 SAY CHR( 25 )
  49.     aChoice ( 5, 25, 21, 56, ;
  50.               { " 1. Clipper GIF decoder", ;
  51.                 " 2. PCX in EGA-VGA", ;
  52.                 " 3. Calculator", ;
  53.                 " 4. Autodesk FLI animations!!!", ;
  54.                 " 5. Calendar", ;
  55.                 " 6. Serpent game", ;
  56.                 " 7. Screen Saver", ;
  57.                 " 8. Clipper Notes", ;
  58.                 " 9. 3D Graph Bar Demo", ;
  59.                 "10. 3D Graph Bar Demo", ;
  60.                 "11. 3D Graph Bar Demo", ;
  61.                 "12. 3D Graph Bar Demo", ;
  62.                 "13. 3D Graph Bar Demo", ;
  63.                 "14. 3D Graph Bar Demo", ;
  64.                 "15. 3D Graph Line Demo", ;
  65.                 "16. 3D Graph Zone Demo", ;
  66.                 "17. 3D Graph Tart Demo", ;
  67.                 "18. 3D Graph Ellipse Demo", ;
  68.                 "19. File Manager", ;
  69.                 "20. Backup", ;
  70.                 "21. Restore", ;
  71.                 "22. Window System Demo", ;
  72.                 "23. Directory Structure", ;
  73.                 "24. Load INI files", ;
  74.                 "25. Load and modify INI files", ;
  75.                 "26. A little Text Editor", ;
  76.                 "27. Windows with light focus", ;
  77.                 "28. Get Password", ;
  78.                 "29. Encrypt string", ;
  79.                 "30. Deencrypt string", ;
  80.                 "31. Graphics Demo", ;
  81.                 "32. Choose Color", ;
  82.                 "33. Keyboard demo", ;
  83.                 "34. Menu System Demo", ;
  84.                 "35. System information", ;
  85.                 "36. Mouse demo", ;
  86.                 "37. Font Editor", ;
  87.                 "38. Footing with Clipper", ;
  88.                 "39. Big Clock", ;
  89.                 "40. Puzzle", ;
  90.                 "41. A mini debugger", ;
  91.                 "42. Ascii Table", ;
  92.                 "43. A message with scroll", ;
  93.                 "44. Sound Blaster demo", ;
  94.                 "45. Parallel DAC demo", ;
  95.                 "46. Speaker demo", ;
  96.                 "47. New Memo edit function", ;
  97.                 "48. More Speed please", ;
  98.                 "49. Fast Icons", ;
  99.                 "50. CD Audio Support!!!", ;
  100.                 "51. GraySumming", ;
  101.                 "52. Caos", ;
  102.                 "53. Make your own debugger" }, ;
  103.               .T., "USERFUNC" )
  104.     Pantalla ( .F. )
  105.     SetPos ( nY, nX )
  106.     SetColor ( cColor )
  107.     SetCursor ( nCursor )
  108.     SetFont ( "Standard.Fon" )
  109. Return ( Nil )
  110.  
  111.  
  112. Function UserFunc ( nMode, nElement, nRel )
  113. Local aScr
  114. Local nRet   := 2
  115. Local nInd
  116. Local cMemo  := "To be or not to be, that's the fastquestion"
  117. Local cColor
  118.     If Lastkey () == K_ESC
  119.       If BoxQuery( "Are you sure you want to exit to DOS?", 20 )
  120.         Return( 0 )
  121.       Else
  122.         Return( 32 )
  123.       EndIf
  124.     ElseIf Lastkey () == K_RETURN
  125.       aScr := SaveScr ( , , , , 1 + nRandom ( 3 ) )
  126.       Pantalla ( .F. )
  127.       Do Case
  128.         Case nElement == 1
  129.           SetVGA256()
  130.           If GIFShow256( "demo.gif" )
  131.             rCursorOn()
  132.             rInkey( 0 )
  133.             rCursorOff()
  134.             Degrade( GetPalette() )
  135.           EndIf
  136.           TxtMode()
  137.           SetBlink(.F.)
  138.         Case nElement == 2
  139.           PCXDemo()
  140.         Case nElement == 3
  141.           Calculator ( "N/W", "G+/N", "R+/N" )
  142.         Case nElement == 4
  143.           FliEver( "fast.fli" )
  144.         Case nElement == 5
  145.           Calendar ( 5, 20, "N/BG", "R/BG", "GR+/B" )
  146.         Case nElement == 6
  147.           Serpent ( "W+/B*", "R+/B*", "G+/B*" )
  148.         Case nElement == 7
  149.           ScreenSave ( "BG+/N", "Fast Library For Clipper. (C) 1994 Manu Roibal" )
  150.         Case nElement == 8
  151.           Notes( "W/B,N/BG", "W/B,N/BG,G/B,W/B,R+/B", "HojaCalc.hc" )
  152.         Case nElement == 9
  153.           BarDemo( 0 )
  154.         Case nElement == 10
  155.           BarDemo( 1 )
  156.         Case nElement == 11
  157.           BarDemo( 2 )
  158.         Case nElement == 12
  159.           BarDemo( 3 )
  160.         Case nElement == 13
  161.           Graph2Demo()
  162.         Case nElement == 14
  163.           Graph3Demo()
  164.         Case nElement == 15
  165.           GraphLineDemo( 1 )
  166.         Case nElement == 16
  167.           GraphLineDemo( 2 )
  168.         Case nElement == 17
  169.           TartDemo()
  170.         Case nElement == 18
  171.           EllipseDemo ()
  172.         Case nElement == 19
  173.           Manager ( "N/W,N/BG", "N/BG", "*.prg" )
  174.         Case nElement == 20
  175.           Backup ( Date (), Time (), "Root", "A:\", ;
  176.                    { { "C:\DOS\",      "*.*"   }, ;
  177.                      { "C:\OS2\MDOS\", "*.COM" } }, ;
  178.                    .T., "N/W,N/W" )
  179.         Case nElement == 21
  180.           Restore ( "A:\", { "D:\DOS" }, "N/W,N/W" )
  181.         Case nElement == 22
  182.           DemoWindows ()
  183.         Case nElement == 23
  184.           TreeDemo ( "C:\", "\*.*" )
  185.         Case nElement == 24
  186.           LoadIniFile( "FAST", "MANU", "CPUTYPE" )
  187.         Case nElement == 25
  188.           ChangeIniFile( "FAST", "MANU", "TIMESLIZE" )
  189.         Case nElement == 26
  190.           Editor ( "Fast.Ini", "W/B" )
  191.         Case nElement == 27
  192.           DemoFocus()
  193.         Case nElement == 28
  194.           GivePass()
  195.         Case nElement == 29
  196.           TopSecret()
  197.         Case nElement == 30
  198.           TopSecret()
  199.         Case nElement == 31
  200.           GraphDemo()
  201.         Case nElement == 32
  202.           SetBlink( .F. )
  203.           cColor := ChooseColor()
  204.           If cColor != Nil
  205.             BoxWarning( "The selected color is: "+ cColor )
  206.           EndIf
  207.         Case nElement == 33
  208.           KeyDemo()
  209.         Case nElement == 34
  210.           Menues ()
  211.         Case nElement == 35
  212.           ClipMem()
  213.         Case nElement == 36
  214.           DemoMouse()
  215.         Case nElement == 37
  216.           FontEdit( "cubo.fon" )
  217.         Case nElement == 38
  218.           Footing()
  219.         Case nElement == 39
  220.           BigClock()
  221.         Case nElement == 40
  222.           BoxWarning( "The winner is... " + If( Puzzle( , , "W" ), "the User", "the Computer" ) )
  223.         Case nElement == 41
  224.           MiniDebug( 7, "Replicate( 'Fast ', 2 )" )
  225.         Case nElement == 42
  226.           AsciiTab()
  227.         Case nElement == 43
  228.           MsgScroll( 10, 20, 30, "Fast Library For Clipper, the best Clipper extender", "GR+/B" )
  229.         Case nElement == 44
  230.           If sbInit()
  231.             sbVocPlay ( "Fast.voc", 8192 )
  232.           EndIf
  233.         Case nElement == 45
  234.           If BoxQuery( "Do you have a Parallel DAC in LPT2?", 20 )
  235.             dacPort( 2 )
  236.             dacVocPlay( "Fast.voc", 8192 )
  237.          EndIf
  238.         Case nElement == 46
  239.           spkVocPlay( "Fast.voc", 8192 )
  240.         Case nElement == 47
  241.           cMemo := FastMemo( 10, 10, 20, 60, cMemo, "Demo", "W+/B", .T., .T. )
  242.         Case nElement == 48
  243.           MoreSpeed()
  244.         Case nElement == 49
  245.           DemoIcons()
  246.         Case nElement == 50
  247.           cdDemo()
  248.         Case nElement == 51
  249.           GraySumming()
  250.         Case nElement == 52
  251.           Caos()
  252.         Case nElement == 53
  253.           MyDebugger()
  254.       EndCase
  255.       SetFont ( "Roman.Fon" )
  256.       SetCursor ( 1 )
  257.       SetCursor ( 0 )
  258.       RestScr ( , , , , aScr )
  259.     ElseIf LastKey () == K_ESC
  260.       nRet := 0
  261.     EndIf
  262. Return ( nRet )
  263.  
  264.  
  265. Function Pantalla ( lModo )
  266. Static cScr
  267.     If lModo
  268.       cScr := SaveScreen ( 0, 0, MaxRow(), MaxCol() )
  269.     Else
  270.       Return ( Implode ( 0, 0, MaxRow(), MaxCol(), cScr ) )
  271.     EndIf
  272. Return ( Nil )
  273.  
  274.  
  275. Function GivePass()
  276. Local cScreen := SaveScreen ( 0, 0, 24, 79 )
  277. Local nCursor := SetCursor ( 0 )
  278. Local cColor  := SetColor ( "W+/B" )
  279.     NewBox ( 5, 5, 9, 74, "Security", "╔═╗║╝═╚║ ", .T. )
  280.     GetPass ( 7, 12, "Input your access key (15 letters Max.):", 15 )
  281.     SetColor ( cColor )
  282.     SetCursor ( nCursor )
  283.     Implode ( 0, 0, 24, 79, cScreen )
  284. Return ( Nil )
  285.  
  286.  
  287. Function TopSecret()
  288. Local cScreen  := SaveScreen ( 0, 0, 24, 79 )
  289. Local nCursor := SetCursor ( 0 )
  290. Local cColor  := SetColor ( "W+/B" )
  291. Local cEncrip
  292. Local cDeEncrip
  293.     NewBox ( 5, 5, 10, 74, "De/Encrypt", "╔═╗║╝═╚║ ", .T. )
  294.     cEncrip := Encrypt( "Manu Roibal", "Password" )
  295.     Message ( 7, 12, "<Manu Roibal> -> encrypt -> " + cEncrip )
  296.     cDeEncrip := DeEncrypt( cEncrip, "Password" )
  297.     Message ( 8, 12, "<" + cEncrip + "> -> deEncrypt -> " + cDeEncrip )
  298.     Inkey (0)
  299.     SetColor ( cColor )
  300.     SetCursor ( nCursor )
  301.     Implode ( 0, 0, 24, 79, cScreen )
  302. Return ( Nil )
  303.  
  304.  
  305. Function TreeDemo ( cDisk, cMask )
  306. Local cScreen  := SaveScreen ( 0, 0, 24, 79 )
  307. Local nCursor := SetCursor ( 0 )
  308. Local cColor  := SetColor ( "W+/B,N/W" )
  309. Local aDisk   := DirTree ( cMask, cDisk )
  310.     Window ( 4, 0, 22, 29, "Directory " + cDisk, "╔═╗║╝═╚║ ", .T. )
  311.     Achoice ( 5, 2, 21, 27, aDisk, .T. )
  312.     SetColor ( cColor )
  313.     SetCursor ( nCursor )
  314.     Implode ( 0, 0, 24, 79, cScreen )
  315. Return ( Nil )
  316.  
  317.  
  318. Function DemoWindows ()
  319. Local aColor := { "N/BG", "W+/R", "R/W",  "G/W",  "B/W",  "W/B", ;
  320.                   "G+/W", "W+/G", "BG/N", "N/BG", "R+/B", "GR+/N" }
  321. Local nType
  322. Local cColor
  323. Local nInd := 0
  324. Local nX1  := 0
  325. Local nY1  := 0
  326. Local nX2  := 0
  327. Local nY2  := 0
  328. Local aScr := {}
  329. Local cScr := ""
  330.     For nInd := 1 To 25
  331.       nX1 := nRandom ( 77 ) + 1
  332.       nY1 := nRandom ( 22 ) + 1
  333.       nX2 := nRandom ( 77 - nX1 ) + nX1 + 1
  334.       nY2 := nRandom ( 22 - nY1 ) + nY1 + 1
  335.       cColor  := aColor [ nRandom ( 11 ) + 1 ]
  336.       nType := nRandom ( 3 ) + 1
  337.       If nX2 - nX1 < 22
  338.         nType := 4
  339.       EndIf
  340.       If nType == 1
  341.         If Seconds () % 2 == 0
  342.           Window ( nY1, nX1, nY2, nX2, "Window with shadow", "╔═╗║╝═╚║ ", .T., cColor )
  343.         Else
  344.           NewBox ( nY1, nX1, nY2, nX2, "NewBox with shadow", "╔═╗║╝═╚║ ", .T., cColor )
  345.         EndIf
  346.       ElseIf nType == 2
  347.         If Seconds () % 2 == 0
  348.           Window ( nY1, nX1, nY2, nX2, "Window without shadow", "╔═╗║╝═╚║ ", .F., cColor )
  349.         Else
  350.           NewBox ( nY1, nX1, nY2, nX2, "NewBox without shadow", "╔═╗║╝═╚║ ", .F., cColor )
  351.         EndIf
  352.       ElseIf nType == 3
  353.         Wall ( nY1, nX1, nY2, nX2, cColor )
  354.       Else
  355.         If Seconds () % 2 == 0
  356.           Window ( nY1, nX1, nY2, nX2, , "╔═╗║╝═╚║ ", .T., cColor )
  357.         Else
  358.           NewBox ( nY1, nX1, nY2, nX2, , "╔═╗║╝═╚║ ", .T., cColor )
  359.         EndIf
  360.       EndIf
  361.     Next
  362.     Inkey(5)
  363.     Stars()
  364.     cScr := SaveScreen ( 0, 0, 24, 79 )
  365.     Fascinate( "G", "BG" )
  366.     Inkey(0)
  367.     aScr := SaveScr ( , , , , 1 )
  368.     RestScreen ( 0, 0, 24, 79, cScr )
  369.     RestScr ( , , , , aScr )
  370.     aScr := SaveScr ( , , , , 2 )
  371.     RestScreen ( 0, 0, 24, 79, cScr )
  372.     RestScr ( , , , , aScr )
  373.     aScr := SaveScr ( , , , , 3 )
  374.     RestScreen ( 0, 0, 24, 79, cScr )
  375.     RestScr ( , , , , aScr )
  376.     aScr := SaveScr ( , , , , 4 )
  377.     RestScreen ( 0, 0, 24, 79, cScr )
  378.     RestScr ( , , , , aScr )
  379. Return ( Nil )
  380.  
  381.  
  382. Function LoadIniFile( cFile, cApplication, cData )
  383. Local cValue
  384. Local cScreen  := SaveScreen ( 0, 0, 24, 79 )
  385. Local aIniFile := IniLoad ( cFile, cApplication )
  386.     cValue := IniSearch( aIniFile, cData, "386SX" )
  387.     Window ( 9, 15, 16, 64, "Configuration", "╔═╗║╝═╚║ ", .T., "N/BG" )
  388.     Message ( 11, 20, "The .Ini shows CPU Type -> " + cValue, "N/BG" )
  389.     Message ( 12, 20, "Default value is        -> 386SX" , "N/BG" )
  390.     Message ( 14, 20, "For more information read Fast.ini", "N/BG" )
  391.     Inkey ( 0 )
  392.     Implode ( 0, 0, 24, 79, cScreen )
  393. Return ( Nil )
  394.  
  395.  
  396. Function ChangeIniFile( cFile, cApplication, cData )
  397. Local cValue
  398. Local cNew
  399. Local cScreen  := SaveScreen ( 0, 0, 24, 79 )
  400. Local aIniFile := IniLoad ( cFile, cApplication )
  401.     cValue := IniSearch( aIniFile, cData, "50" )
  402.     Window ( 9, 15, 16, 64, "Configuration", "╔═╗║╝═╚║ ", .T., "N/BG" )
  403.     Message ( 11, 20, "The .Ini shows Time Slize -> " + cValue, "N/BG" )
  404.     cNew := TransForm ( nRandom ( 99 ), "99" )
  405.     IniSave( aIniFile, cData, cNew )
  406.     IniWrite( aIniFile, cFile, cApplication )
  407.     Message ( 12, 20, "New value will be         -> " + cNew, "N/BG" )
  408.     Message ( 14, 20, "For more information read Fast.ini", "N/BG" )
  409.     Inkey ( 0 )
  410.     Implode ( 0, 0, 24, 79, cScreen )
  411. Return ( Nil )
  412.  
  413.  
  414. Function DemoFocus()
  415. Local aButton
  416.     aButton := BoxOpen ( 3, 10, 5, 50, "B", .1 )
  417.     Message ( 4, 13, "- Original idea by Urbano García -", "W+/B" )
  418.     While Inkey ( 0 ) != K_ESC
  419.       BoxPush ( aButton )
  420.     End
  421.     BoxClose ( aButton )
  422. Return ( Nil )
  423.  
  424.  
  425. Function GraphDemo ()
  426.     SetVGA()
  427.     DispStr ( "Now, i am going to generate lines until you press any key", 35, 50, 9, 0, 10 )
  428.     Inkey(0)
  429.     While Inkey() == 0
  430.       gLine( nRandom(639), nRandom(479), nRandom(639), nRandom(479), nRandom( 15 ) )
  431.     End
  432.     TxtMode()
  433.     SetBlink(.F.)
  434. Return ( Nil )
  435.  
  436.  
  437. Function BarDemo( nType )
  438.     SetVGA ()
  439.     GraphBar ( "This is a VGA special efects demo", ;
  440.                { "Item 1",          { 2481, 3212, 4212, 1266, 1699, 6312 } }, ;
  441.                { "Item 2",          { 4000, 2000, 4000, 2000, 8000, 9000 } }, ;
  442.                { "Item 3",          { 2481, 3212, 4212, 1266, 1699, 6312 } }, ;
  443.                { "Item 4 and last", { 2281, 3332, 3212, 2557, 7499, 2612 } }, ;
  444.                nType )
  445.     Inkey (0)
  446.     TxtMode ()
  447.     SetBlink (.F.)
  448. Return ( Nil )
  449.  
  450.  
  451. Function Graph2Demo ()
  452.     SetVGA ()
  453.     GraphBar2( "This is a VGA special efects demo", ;
  454.                 { { 9481, 4212, 5212, 4266, 8699, 9442, 9298, 9481, 4212, 5212, 4266, 8699 }, ;
  455.                   { 2481, 3212, 4212, 1266, 1699, 6312, 7921, 7481, 2212, 5412, 3266, 4699 }, ;
  456.                   { 2281, 3332, 3212, 2557, 7499, 2612, 3120, 6481, 1212, 3212, 4266, 7699 }, ;
  457.                   { 7481, 1212, 4642, 1234, 6542, 9312, 1921, 8481, 3212, 4212, 2266, 6699 } } )
  458.     Legend (  20, 420, 15,  9, "Fast Library" )
  459.     Legend ( 340, 420, 15, 10, "Other" )
  460.     Legend (  20, 450, 15, 11, "Other" )
  461.     Legend ( 340, 450, 15, 12, "Other" )
  462.     Inkey (0)
  463.     TxtMode ()
  464.     SetBlink (.F.)
  465. Return ( Nil )
  466.  
  467.  
  468. Function Graph3Demo ()
  469.     SetVGA ()
  470.     GraphBar3 ( "This is a VGA special efects demo", ;
  471.                { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6", ;
  472.                  "Item 7", "Item 8", "Item 9", "Item A", "Item B", "Item C", ;
  473.                  "Item D", "Item E", "Item F", "Item 0" }, ;
  474.                {     9481,     4212,     5212,     4266,     8699,     9442, ;
  475.                     19481,    23212,     5212,     2166,     1699,    19442, ;
  476.                      7212,    12266,      699,    22442 } )
  477.     Inkey (0)
  478.     TxtMode ()
  479.     SetBlink (.F.)
  480. Return ( Nil )
  481.  
  482.  
  483. Function GraphLineDemo( nMode )
  484.     SetVGA ()
  485.     If nMode == 1
  486.       GraphLine( "This is a VGA special efects demo", ;
  487.                  { { 1481, 1212, 2642, 1234, 1542, 1312, 1921, 2481, 1212, 2212, 2266, 2699 }, ;
  488.                    { 2281, 3332, 3212, 2557, 2499, 2612, 3120, 2481, 1312, 3212, 4266, 3699 }, ;
  489.                    { 2481, 3212, 4212, 1266, 1699, 6312, 7921, 7481, 2212, 5412, 3266, 4699 }, ;
  490.                    { 9481, 6212, 5212, 4266, 8699, 9442, 9298, 9481, 5212, 6212, 5266, 8699 } } )
  491.     Else
  492.       GraphZone( "This is a VGA special efects demo", ;
  493.                  { { 1481, 1212, 2642, 1234, 1542, 1312, 1921, 2481, 1212, 2212, 2266, 2699 }, ;
  494.                    { 2281, 3332, 3212, 2557, 2499, 2612, 3120, 2481, 1312, 3212, 4266, 3699 }, ;
  495.                    { 2481, 3212, 4212, 1266, 1699, 6312, 7921, 7481, 2212, 5412, 3266, 4699 }, ;
  496.                    { 9481, 6212, 5212, 4266, 8699, 9442, 9298, 9481, 5212, 6212, 5266, 8699 } } )
  497.     EndIf
  498.     Legend (  20, 420, 15,  9, "Other" )
  499.     Legend ( 340, 420, 15, 10, "Other" )
  500.     Legend (  20, 450, 15, 11, "Other" )
  501.     Legend ( 340, 450, 15, 12, "Fast Library" )
  502.     Inkey (0)
  503.     TxtMode ()
  504.     SetBlink (.F.)
  505. Return ( Nil )
  506.  
  507.  
  508. Function TartDemo()
  509. Local cTitulo := "Statistics"
  510.     SetVGA ()
  511.     GraphTart ( 540, 60, 40, { 17, 3, 15, 60, 15 } )
  512.     GraphTart ( 80, 120, 30, { 17, 3, 15, 60, 15 } )
  513.     gBox ( 210, 130, 430, 350, 10 )
  514.     GraphTart ( 320, 240, 100, { 17, 3, 15, 60, 15 } )
  515.     DispStr ( cTitulo, 320 - Len ( cTitulo ) * 4, 370, 15, 0 )
  516.     Legend ( 320, 460, 15, 4, "Fast Library For Clipper" )
  517.     Inkey (0)
  518.     TxtMode ()
  519.     SetBlink (.F.)
  520. Return ( Nil )
  521.  
  522.  
  523. Function EllipseDemo ()
  524. Local cTitulo := "Statistics"
  525.     SetVGA ()
  526.     GraphEllipse ( 540, 60, 40, { 17, 3, 15, 60, 15, 21, 21, 23, 54 } )
  527.     GraphEllipse ( 80, 120, 30, { 17, 3, 15, 60, 15, 21, 47, 11, 11, 64, 11 } )
  528.     gBox ( 210, 130, 430, 350, 10 )
  529.     GraphEllipse ( 320, 240, 100, { 17, 23, 12, 72, 3, 15, 60, 21, 15 } )
  530.     DispStr ( cTitulo, 320 - Len ( cTitulo ) * 4, 370, 15, 0 )
  531.     Legend ( 320, 460, 15, 4, "Fast Library For Clipper" )
  532.     Inkey (0)
  533.     TxtMode ()
  534.     SetBlink (.F.)
  535. Return ( Nil )
  536.  
  537.  
  538. Function DemoMouse()
  539.     Cls
  540.     If rIsMouse()
  541.       ? "Well, you have a mouse; Them, press any key or mouse button"
  542.       rSoftCur()
  543.       rInkey(0)
  544.       rCursorOn ()
  545.       rSetPos ( 12, 39 )
  546.       ? "Now mouse cursor is on 12,39"
  547.       rSetPos ( 12, 39 )
  548.       rInkey(0)
  549.       rCursorOff ()
  550.       ? "good bye mouse"
  551.       rInkey(0)
  552.       rCursorOn()
  553.       ? "hello mouse"
  554.       rInkey(0)
  555.       ? "Now, press any key or mouse button"
  556.       rInkey(0)
  557.       rCursorOff()
  558.     Else
  559.       BoxWarning ( "There is no mouse on system" )
  560.     EndIf
  561. Return ( Nil )
  562.  
  563.  
  564. Function Menues ()
  565. Local aMenu
  566. Local nOpt
  567. Local cColor   := "W+/BG,N+/BG"
  568. local cGet1    := "Manu Roibal                 "
  569. local cGet2    := "Fast Library For Clipper "
  570. local GetList  := {}
  571. local nChoice1 := 2
  572. local nChoice2 := 1
  573. local nChoice3 := 1
  574. local nChoice4 := 3
  575. local nChoice5 := 2
  576.     Fascinate ( "GR", "BG" )
  577.     Set wrap On
  578.     Set message To 24 Center
  579.     @ 24, 0 Say Space ( 80 ) Color "N/W"
  580.     aMenu := NewMenu( { "^System", "^Tools", "^States", "^Last" }, ;
  581.                       { "N/W", "R/W", "N/G", "R/G", "N/W", "N/G", "N+/W", ;
  582.                         "R/W", "R/G" }, ;
  583.                       .T. )
  584.     AddItem ( aMenu, 1, "^New", "Nothing" )
  585.     AddItem ( aMenu, 1, "^Open" )
  586.     AddLine ( aMenu, 1 )
  587.     AddItem ( aMenu, 1, "^Save", "More messages", , { "Item 1", "Item 2", "Item 3" } )
  588.     AddItem ( aMenu, 1, "^Discard", , , { "First Item", "Second Item", "Third Item" } )
  589.     AddLine ( aMenu, 1 )
  590.     AddItem ( aMenu, 1, "Good m^orning sir", , 3 )
  591.     AddItem ( aMenu, 1, "^Quit", "Are you sure you want exit from here?" )
  592.     DelItem ( aMenu, 1, 3 )
  593.     OffItem ( aMenu, 1, 2 )
  594.     AddItem ( aMenu, 2, "^Cut" )
  595.     AddItem ( aMenu, 2, "^Paste" )
  596.     AddItem ( aMenu, 2, "^Copy" )
  597.     AddItem ( aMenu, 3, "^Search" )
  598.     AddItem ( aMenu, 3, "^Replace" )
  599.     AddItem ( aMenu, 4, "^Help" )
  600.     AddItem ( aMenu, 4, "And ^more Help" )
  601.     AddItem ( aMenu, 4, "And more, ^and more..." )
  602.     AddLine ( aMenu, 4 )
  603.     AddItem ( aMenu, 4, "Little rabbit ^Duracell", , , { "1 Item", "2 Item", "3 Item" } )
  604.     nOpt := DispMenu ( aMenu, 3 )
  605.     BoxWarning ( "And the winer is... " + Str ( nOpt ) )
  606.     Cls
  607.     SetCursor ( 1 )
  608.     @ 4,5  say "Get Normal 1:" get cGet1
  609.     @ 6,5  say "Clipper Lib"   get nChoice1 VALID nChoice1 == 3 COLOR cColor ;
  610.            with radiobuttons { "1 Option1", "2 No buttons 2", "3 Not Selected" }
  611.     @ 6,40 say "Fast Library"  get nChoice2 when nChoice1 != 2 COLOR cColor ;
  612.            with radiobuttons { "1 Adios", "2 Agur", "3 Bye bye", "4 Adeu" }
  613.     @ 7,60 get nChoice3        COLOR cColor ;
  614.            with radiobuttons { "1 Fast", "2 Normal", "3 Slow" } ;
  615.            nobox
  616.     @ 12,5 say "Get Normal 2:" get cGet2
  617.     @ 15,5 say "Botones 4:"
  618.     @ 15,col()+1 get nChoice4 COLOR cColor ;
  619.                  with radiobuttons { "1 Option 1", "2 Option 2", "3 Option 3" } ;
  620.                  nobox ;
  621.                  horizontal
  622.     @ 17,5 Say "Botones 5:" get nChoice5 COLOR cColor ;
  623.            with radiobuttons { "1 Option1", "2 Option 2", "3 Option 3" } ;
  624.            double ;
  625.            horizontal
  626.     read
  627. Return ( Nil )
  628.  
  629.  
  630. Function MoreSpeed()
  631. Local nTime
  632. Local aButton
  633. Local nInd
  634.     aButton := BoxOpen ( 8, 2, 14, 76, "B", .1 )
  635.     @ 10, 10 Say "Writes 1 to 15.000 with @ Say ->" Color "W+/B"
  636.     nTime := Seconds()
  637.     For nInd := 1 to 15000
  638.       @ 10, 40 Say Str( nInd ) Color "W+/B"
  639.     Next
  640.     @ 10, 60 Say Str( Seconds() - nTime ) Color "GR+/B"
  641.     @ 12, 10 Say "Writes 1 to 15.000 with Fast  ->" Color "W+/B"
  642.     nTime := Seconds()
  643.     For nInd := 1 to 15000
  644.       FastPrint( 12, 40, Str( nInd ), 31 )
  645.     Next
  646.     @ 12, 60 Say Str( Seconds() - nTime ) Color "GR+/B"
  647.     Inkey(0)
  648.     BoxClose( aButton )
  649. Return( Nil )
  650.  
  651.  
  652. Function DemoIcons()
  653. Local aExit, aCube, aLine
  654.     Cls
  655.     SetFont( "Cubo.Fon" )
  656.     Screen( Chr( 235 ), "N+/W" )
  657.     aExit := BoxOpen( 5, 30, 7, 34, "B", 0.2 )
  658.     @ 6, 31 Say "≡≤≥" Color "GR+/B"
  659.     aCube := BoxOpen( 5, 38, 7, 42, "B", 0.2 )
  660.     @ 6, 39 Say " ⌠ " Color "GR+/B"
  661.     aLine := BoxOpen( 5, 46, 7, 50, "B", 0.2 )
  662.     @ 6, 47 Say " ┌█" Color "GR+/B"
  663.     Inkey( 0 )
  664.     BoxPush( aExit )
  665.     Inkey( 0 )
  666.     BoxPush( aCube )
  667.     Inkey( 0 )
  668.     BoxPush( aLine )
  669.     SetFont( "Standard.Fon" )
  670. Return( Nil )
  671.  
  672.  
  673. Function Footing()
  674. Local nI      := 0
  675. Local nCont   := 1
  676. Local cC      := ""
  677. Local nN      := 1
  678. Local cColor  := setcolor( "Gr+/B" )
  679. Local aWords  := {}
  680. Local cMsg    := "Fast-Fonts Demo ideated by ≈Yosu Unibaso"
  681. Local nLenMsg := Len( cMsg ) + 12 - 1
  682. Local aBox
  683.     aWords := Array( 80 )
  684.     aFill( aWords, " " )
  685.     For nI := 12 To nLenMsg
  686.       aWords[ nI ] := SubStr( cMsg, nI - 11, 1 )
  687.     Next
  688.     SetFont( "cubo.fon" )
  689.     aBox := BoxOpen( 4, 0, 6, 79, "b", 0.2 )
  690.     @ 5, 2 Say "ε"
  691.     For nI := 2 To 78
  692.       If nCont == 1
  693.         cC := "±"
  694.       ElseIf nCont == 2
  695.         cC := "ε"
  696.       ElseIf nCont == 3
  697.         cC := "÷"
  698.       ElseIf nCont == 4
  699.         cC := "ε"
  700.       EndIf
  701.       @ 5, nI say cC
  702.       nCont := If( nCont < 4, ++nCont, 1 )
  703.       Delay( 0.1 )
  704.       @ 5, nI say aWords[ nI ]
  705.     Next
  706.     cC := "▄▌"
  707.     For nI := 2 To 77
  708.       @ 5, nI Say cC
  709.       Delay( 0.1 )
  710.       @ 5, nI Say "  "
  711.     Next
  712.     BoxPush( aBox )
  713.     BoxClose( aBox )
  714.     SetFont( "standard.fon" )
  715.     SetColor( cColor )
  716. Return( Nil )
  717.  
  718.  
  719. Function KeyDemo()
  720.     Cls
  721.     While Inkey() != K_ESC
  722.       @  1, 2 say "Insert     " + If( IsInsert(), "Yes", "No " )
  723.       @  2, 2 say "Caps       " + If( IsCaps(),   "Yes", "No " )
  724.       @  3, 2 say "Num        " + If( IsNum(),    "Yes", "No " )
  725.       @  4, 2 say "Scroll     " + If( IsScroll(), "Yes", "No " )
  726.       @  5, 2 say "Alt        " + If( IsAlt(),    "Yes", "No " )
  727.       @  6, 2 say "Ctrl       " + If( IsCtrl(),   "Yes", "No " )
  728.       @  7, 2 say "lShift     " + If( IsLShift(), "Yes", "No " )
  729.       @  8, 2 say "rShift     " + If( IsRShift(), "Yes", "No " )
  730.       @ 10, 2 say "Joystick 1 " + If( jButton1(), "Yes", "No " )
  731.       @ 11, 2 say "Joystick 2 " + If( jButton2(), "Yes", "No " )
  732.       @ 14, 2 say "Push Esc to exit"
  733.     End
  734. Return Nil
  735.  
  736.  
  737. Function cdDemo()
  738. Local nKey
  739. Local aButtons := Array( 5 )
  740. Local aTracks
  741. Local nInd
  742.    BoxOpen( 1, 1, 7, 70, "B" )
  743.    @  3, 3 say "CD Install & ready : " + if( cdInstall(), "Yes", "No" )  Color "GR+/B"
  744.    @  4, 3 say "MSCDEX Version     : " + MSCDEXVer()                     Color "GR+/B"
  745.    @  5, 3 say "First CD unit      : " + cdDrive()                       Color "GR+/B"
  746.    aButtons[ 1 ] := BoxMessage( "<F1>  Start the CD ", 11,  5 )
  747.    aButtons[ 2 ] := BoxMessage( "<F2>  Stop the CD  ", 15,  5 )
  748.    aButtons[ 3 ] := BoxMessage( "<F3>  Resume the CD", 11, 40 )
  749.    aButtons[ 4 ] := BoxMessage( "<F4>  Eject the CD",  15, 40 )
  750.    aButtons[ 5 ] := BoxMessage( "<Esc> Exit         ", 19,  5 )
  751.    While ( nKey := Inkey( 0 ) ) != K_ESC
  752.      if nKey == K_F1
  753.        BoxPush( aButtons[ 1 ] )
  754.        cdPlay( 1 )
  755.      ElseIf nKey == K_F2
  756.        BoxPush( aButtons[ 2 ] )
  757.        cdStop()
  758.      ElseIf nKey == K_F3
  759.        BoxPush( aButtons[ 3 ] )
  760.        cdResume()
  761.      ElseIf nKey == K_F4
  762.        BoxPush( aButtons[ 4 ] )
  763.        cdEject()
  764.      EndIf
  765.    End
  766.    BoxPush( aButtons[ 4 ] )
  767. Return( Nil )
  768.  
  769.  
  770. Function PCXDemo ()
  771. Local i
  772.     SetVGA()
  773.     PCXShow ( "fast.pcx", .F., 100,  10 )
  774.     DispStr ( "Press any key to continue", 350, 60, 15, 0 )
  775.     While Inkey() == 0
  776.       For i := 0 To -340 Step -2
  777.         Origin( 0, i )
  778.       Next
  779.       For i := -340 To 0 Step +2
  780.         Origin( 0, i )
  781.       Next
  782.       Origin( 0, 0 )
  783.     End
  784.     TxtMode ()
  785.     SetBlink(.F.)
  786. Return ( Nil )
  787.  
  788.  
  789. Function ClipMem()
  790. LOCAL aBox       := BoxOpen( 3, 3, 22, 76, "B" )
  791. LOCAL cColor     := SETCOLOR( "GR+/B" )
  792. Local nProcessor := CPUType()
  793. Local cProcessor
  794.     IF nProcessor == 86
  795.       cProcessor := "8086/88"
  796.     ELSEIF nProcessor == 286
  797.       cProcessor := "80286"
  798.     ELSEIF nProcessor == 386
  799.       cProcessor := "80386/486"
  800.     ENDIF
  801.     @  5,  5 SAY FastVersion()
  802.     @  6,  5 SAY FastRight()
  803.     @  8,  5 SAY "Processor          " + cProcessor
  804.     @  9,  5 SAY "CoProcessor        " + If( IsCopro(), "Yes", "No" )
  805.     @ 11,  5 SAY "Paralel ports      " + Str( NumParalel(), 1 )
  806.     @ 12,  5 SAY "Serial ports       " + Str( NumSerial(),  1 )
  807.     @ 14,  5 SAY "Disk Serial Number " + DiskSerNum( 0 )
  808.     @ 15,  5 SAY "Disk Volume Label  " + GetLabel( 0 )
  809.     @ 17,  5 SAY "DPMI Version       " + IF( IsDPMI(),     DPMIVersion(), "00.00" )
  810.     @ 18,  5 SAY "WIN 3 Version      " + IF( IsWin3(),     WinVersion(),  "00.00" )
  811.     @ 19,  5 SAY "DESQVIEW Version   " + IF( IsDesqView(), DesqVer(),     "00.00" )
  812.     @ 20,  5 SAY "MSCDEX Version     " + IF( CDInstall(),  MSCDEXVer(),   "00.00" )
  813.     @  5, 45 SAY "Data Memory  (Kb)  " + Str( memory( 0 ) )
  814.     @  6, 45 SAY "Longer block (Kb)  " + Str( memory( 1 ) )
  815.     @  7, 45 SAY "Run Memory   (Kb)  " + Str( memory( 2 ) )
  816.     @  9, 45 SAY "PRINT    loaded  " + IF( IsPrint(),    "Yes", "No" )
  817.     @ 10, 45 SAY "ANSI     loaded  " + IF( IsAnsi(),     "Yes", "No" )
  818.     @ 11, 45 SAY "KEYB     loaded  " + IF( IsKeyb(),     "Yes", "No" )
  819.     @ 12, 45 SAY "QEMM     loaded  " + IF( IsQEMM(),     "Yes", "No" )
  820.     @ 13, 45 SAY "SHARE    loaded  " + IF( IsShare(),    "Yes", "No" )
  821.     @ 14, 45 SAY "SMARTDRV loaded  " + IF( IsSmartDrv(), "Yes", "No" )
  822.     @ 15, 45 SAY "XMS Drv. loaded  " + IF( IsXMS(),      "Yes", "No" )
  823.     @ 17, 45 SAY "NOVELL present   " + IF( IsNovell(),   "Yes", "No" )
  824.     @ 18, 45 SAY "MSLAN  present   " + IF( IsMSLAN(),    "Yes", "No" )
  825.     @ 20, 45 SAY "Computer Type    " + STR( BiosModel(), 3 ) + STR( BiosSubMod(), 3 ) + STR( BiosRev(), 3 )
  826.     INKEY( 0 )
  827.     SETCOLOR( cColor )
  828. Return( Nil )
  829.  
  830.  
  831. Function GraySumming()
  832. Local cPalette := GetPalette()
  833.     BoxMessage( "This is a test for SetGray() funcion", 2 )
  834.     BoxWarning( "Now, i'm going to change your monitor to b/w" )
  835.     SetGray( .T. )
  836.     BoxWarning( "And... Now, the monitor will return to your original state" )
  837.     SetGray( .F. )
  838.     SetPalette( cPalette )
  839.     BoxWarning( { "This function allows to test an application in a system with", ;
  840.                   "a color monitor or in a system with a B/W monitor" } )
  841. Return( Nil )
  842.  
  843.  
  844. FUNCTION Banner()
  845.     CLS
  846.     BigString  (  6,  7, "FAST.lib",   "G+/B" )
  847.     SmallString(  0,  0, "Welcome to", "GR+/B" )
  848.     SmallString( 18, 23, "3.15",       "W+/B" )
  849.     Inkey( 0 )
  850. RETURN NIL
  851.  
  852.  
  853.  
  854. Function MyDebugger()
  855. Local aArray :=  { "Hello", 12, .T., { || Version() }, ;
  856.                    { { "new", "other" }, 12 } }
  857.     BoxWarning( "I'm going to inspect an object or array" )
  858.     InspectOBJ( "aArray", aArray )
  859.     BoxWarning( "I'm going to inspect the active workareas" )
  860.     use test new
  861.     InspectDBF()
  862.     close test
  863.     BoxWarning( "I'm going to inspect the SETs" )
  864.     InspectSETS()
  865. Return( Nil )
  866.  
  867.  
  868.