home *** CD-ROM | disk | FTP | other *** search
Text File | 2002-01-30 | 58.9 KB | 2,284 lines |
- *-- PROGRAM FILE -------------------------------------------------------------
- * Application: eXPress++ Library
- * Description: eXPress++ sample programs
- * File Name: xsample3.prg
- * Author: Roger Donnay Tester:
- * Date created: 10/11/99 Date updated: 11/07/2001
- * Copyright: (c) 2001 by DONNAY Software Designs
- *-----------------------------------------------------------------------------
-
- #include "DCDIALOG.CH"
- #include "SET.CH"
- #include "XBP.CH"
- #include "APPEVENT.CH"
- #include "dcpick.ch"
- #include "dcapp.ch"
- #include "dcbitmap.ch"
- #include "dcicon.ch"
- #include "dccursor.ch"
- #include "dcgra.ch"
- #INCLUDE "inkey.CH"
- #INCLUDE "dctree.ch"
- #INCLUDE "dcdir.ch"
- #include "font.ch"
- #INCLUDE "dcprint.CH"
- #include "directry.ch"
-
- FUNCTION X_Samples_3( oDialog )
-
- LOCAL GetList := {}, nTest := 0, cMemo := '', oMemo, i, j, oDlg, ;
- lDebugCreate := .f., lDebugEvent := .f., GetOptions, aApp[1], ;
- cTitle, oDlgWindow, aCoords, oSourceFile, cSource
-
- SET DEFA TO
- SET PATH TO ..\DATA
-
- cTitle := 'eXPress++ Sample Programs (Set 3)'
- nTest := 0
- cMemo := ''
- lDebugEvent := .f.
- lDebugCreate := .f.
-
- FOR i := 1 TO 5
- FOR j := 1 TO 6
- nTest++
- @ j-1,1 + (i-1)*14 DCRADIO nTest ;
- VALUE nTest ;
- PROMPT XSample_Header(nTest) ;
- ACTION {||XSample_Memo(nTest,oMemo,oSourceFile,@cSource)}
- NEXT j
- NEXT i
- nTest := 1
-
- @ 2,73 DCPUSHBUTTON CAPTION 'Run Sample' ;
- SIZE 12, 1 ;
- ACTION {||XSample_Run(nTest,oDialog,lDebugCreate,lDebugEvent,GetList,GetOptions)}
-
- @ 3,73 DCPUSHBUTTON CAPTION 'Print Source' ;
- SIZE 12, 1 ;
- ACTION {||XSample_Print(cSource)}
-
- @ 4,73 DCPUSHBUTTON CAPTION 'Exit' ;
- SIZE 12, 1 ;
- ACTION {||PostAppEvent(xbeP_Close,,,oDlg)}
-
- @ 5,73 DCCHECKBOX lDebugEvent PROMPT 'Debug Events'
-
- @ 6.3,5 DCSAY '' SAYSIZE 60 COLOR GRA_CLR_DARKBLUE ;
- OBJECT oSourceFile FONT '8.Courier Bold'
-
- @ 7,1 DCMULTILINE cMemo ;
- OBJECT oMemo ;
- SIZE 85,12 ;
- FONT '8.Alaska Crt'
-
- DCGETOPTIONS ;
- ICON ICON_EXPRESS ;
- NOBUSY ;
- CASCADE
-
- DCREAD GUI ;
- OPTIONS GetOptions ;
- EVAL {||XSample_Memo(nTest,oMemo,oSourceFile,@cSource)} ;
- APPWINDOW oDialog ;
- PARENT @oDlg ;
- TITLE cTitle ;
- FIT
-
- CLOSE DATABASES
-
- RETURN nil
-
- * ------------------------- *
-
- STATIC FUNCTION XSample_Memo( nTest, oMemo, oSourceFile, cSource )
-
- LOCAL cFunction, nFound, cSourceFile
-
- cSource := ''
- nTest += 72
- cFunction := 'XSample_' + Alltrim(Str(nTest))
-
- cSourceFile := 'XSAMPLE3.PRG'
- cSource := MemoRead(cSourceFile)
- IF Empty(cSource)
- cSourceFile := '..\PRG\XSAMPLE3.PRG'
- cSource := MemoRead(cSourceFile)
- ENDIF
- IF Empty(cSource)
- cSource := 'XSAMPLE3.PRG cannot be found'
- ENDIF
-
- nFound := AT('FUNCTION ' + cFunction,cSource)
- cSource := Substr(cSource,nFound)
- nFound := AT('*** END OF EXAMPLE ***',cSource)
- cSource := Substr(cSource,1,nFound+21)
-
- IF !Empty(cSource)
- oMemo:setData(cSource)
- oSourceFile:setCaption(cSourceFile)
- ENDIF
- RETURN nil
-
- * -------------------
-
- STATIC FUNCTION XSample_Print( cSource )
-
- LOCAL oPrinter, nLineCount := MLCount(cSource), i, cMemoLine, nRow
-
- DCPRINT ON TO oPrinter PREVIEW FONT '10.Courier' NONSTOP HIDE
- IF Valtype(oPrinter) # 'O' .OR. !oPrinter:lActive
- RETURN nil
- ENDIF
- nRow := 1
- FOR i := 1 TO nLineCount - 1
- cMemoLine := MemoLine( cSource, nil, i )
- @ nRow++,2 DCPRINT SAY cMemoLine PRINTER oPrinter
- IF nRow > 60
- DCPRINT EJECT
- nRow := 1
- ENDIF
- NEXT
- DCPRINT OFF
-
- RETURN nil
-
- * ---------------------------- *
-
- STATIC FUNCTION XSample_Run( nTest, oDialog, lDebugCreate, lDebugEvent, ;
- GetList, GetOptions )
-
- LOCAL nDebug := 0
-
- DC_Gui(.t.)
-
- nTest += 72
- IF lDebugCreate
- nDebug += DCGUI_DEBUG_CREATE
- ENDIF
- IF lDebugEvent
- nDebug += DCGUI_DEBUG_EVENTS
- ENDIF
- DC_ReadGuiDebug(nDebug)
- CLOSE ALL
- SET DEFA TO
-
- IF nTest = 73
- XSample_73()
- ELSEIF nTest = 74
- XSample_74()
- ELSEIF nTest = 75
- XSample_75()
- ELSEIF nTest = 76
- XSample_76()
- ELSEIF nTest = 77
- XSample_77()
- ELSEIF nTest = 78
- XSample_78()
- ELSEIF nTest = 79
- XSample_79()
- ELSEIF nTest = 80
- XSample_80()
- ELSEIF nTest = 81
- XSample_81()
- ELSEIF nTest = 82
- XSample_82()
- ELSEIF nTest = 83
- XSample_83()
- ELSEIF nTest = 84
- XSample_84()
- ELSEIF nTest = 85
- XSample_85()
- ELSEIF nTest = 86
- XSample_86()
- ELSEIF nTest = 87
- XSample_87()
- ELSEIF nTest = 88
- XSample_88()
- ELSEIF nTest = 89
- XSample_89()
- ELSEIF nTest = 90
- XSample_90()
- ELSEIF nTest = 91
- XSample_91()
- ELSEIF nTest = 92
- XSample_92()
- ELSEIF nTest = 93
- XSample_93()
- ELSEIF nTest = 94
- XSample_94(GetList,GetOptions)
- ELSEIF nTest = 95
- XSample_95()
- ELSEIF nTest = 96
- XSample_96()
- ELSEIF nTest = 97
- XSample_97(oDialog)
- ELSEIF nTest = 98
- XSample_98()
- ELSEIF nTest = 99
- XSample_99()
- ELSEIF nTest = 100
- XSample_100()
- ELSEIF nTest = 101
- XSample_101()
- ELSEIF nTest = 102
- XSample_102()
- ENDIF
-
- DC_ClearEvents()
-
- RETURN nil
-
- * ---------------------------- *
-
- STATIC FUNCTION XSample_Header( nTest, oDlg )
-
- nTest += 72
-
- IF nTest = 73
- RETURN "FindBrow 1"
- ELSEIF nTest = 74
- RETURN "FindBrow 2"
- ELSEIF nTest = 75
- RETURN "FindBrow 3"
- ELSEIF nTest = 76
- RETURN 'GraphicDlg'
- ELSEIF nTest = 77
- RETURN 'StaticScroll'
- ELSEIF nTest = 78
- RETURN 'ScrnReport'
- ELSEIF nTest = 79
- RETURN 'Hybrid #1'
- ELSEIF nTest = 80
- RETURN 'Hybrid #2'
- ELSEIF nTest = 81
- RETURN 'Row()/Col()'
- ELSEIF nTest = 82
- RETURN 'GetCombo'
- ELSEIF nTest = 83
- RETURN 'GraphicButt'
- ELSEIF nTest = 84
- RETURN 'HelpLink'
- ELSEIF nTest = 85
- RETURN 'SmallGets'
- ELSEIF nTest = 86
- RETURN 'Persist 1'
- ELSEIF nTest = 87
- RETURN 'Persist 2'
- ELSEIF nTest = 88
- RETURN 'Design'
- ELSEIF nTest = 89
- RETURN 'Handler'
- ELSEIF nTest = 90
- RETURN 'Debugging'
- ELSEIF nTest = 91
- RETURN 'ReSize'
- ELSEIF nTest = 92
- RETURN 'Tree'
- ELSEIF nTest = 93
- RETURN 'TreeMenu'
- ELSEIF nTest = 94
- RETURN 'TreeBrowr'
- ELSEIF nTest = 95
- RETURN 'PrintConcat'
- ELSEIF nTest = 96
- RETURN 'SetParent'
- ELSEIF nTest = 97
- RETURN 'FixedFonts'
- ELSEIF nTest = 98
- RETURN 'JazzyEmail'
- ELSEIF nTest = 99
- RETURN 'QuickBrow 1'
- ELSEIF nTest = 100
- RETURN 'QuickBrow 2'
- ELSEIF nTest = 101
- RETURN 'GRA Say..Get'
- ELSEIF nTest = 102
- RETURN 'ColoredGets'
- ENDIF
-
- RETURN ''
-
- * ---------------------------- *
-
- STATIC FUNCTION XSample_73
-
- /*
- Demonstration of DC_FindBrowse() # 1
-
- This is a generic find dialog for finding a record
- in a database.
- */
-
- LOCAL aFields, aPres, aSort[6], aSaveSort
-
- aSort[1] := GRA_CLR_WHITE // Sort Selected Color (Foreground)
- aSort[2] := GRA_CLR_RED // Sort Selected Color (Background)
- aSort[3] := GRA_CLR_WHITE // Sort Unselected Color (Foreground)
- aSort[4] := GRA_CLR_DARKGRAY // Sort Unselected Color (Background)
- aSort[5] := BITMAP_RD_UP_RED // Sort UP Bitmap
- aSort[6] := BITMAP_RD_DOWN_RED // Sort DOWN Bitmap
-
- #ifdef EXPRESS17
- aSaveSort := DC_FindBrowseSort(aSort)
- #endif
-
- IF !File('..\XDOC\EXPRESS.DBF')
- DC_MsgBox({'Sorry. The database required to show this feature',;
- 'is not included in the demonstration version', ;
- 'or the ..\XDOC\EXPRESS.DBF file does not exist'})
- RETURN nil
- ENDIF
-
- SET DEFA TO ..\XDOC
- USE EXPRESS VIA FOXCDX EXCLUSIVE ALIAS 'XDOC'
- SET INDEX TO EXPRESS.CDX
- OrdSetFocus('COMMAND')
- SET DEFA TO
-
- aPres := ;
- { { XBP_PP_COL_HA_FGCLR, GRA_CLR_WHITE }, ;
- { XBP_PP_COL_HA_BGCLR, GRA_CLR_DARKGRAY }, ;
- { XBP_PP_COL_DA_FGCLR, GRA_CLR_BLACK }, ;
- { XBP_PP_COL_DA_BGCLR, GRA_CLR_WHITE } }
-
- aFields := ;
- { ; // field Header Width Index Prompt
- { {||XDOC->type}, 'Type', 8, "TYPE", 'Type' } , ;
- { {||XDOC->command}, 'Command', 8, 'COMMAND', 'Command' }, ;
- { {||XDOC->category}, 'Category', 8, 'CATEGORY', 'Category' }, ;
- { {||XDOC->module}, 'Module', 8, 'MODULE', 'Module' }, ;
- { {||XDOC->SHORT}, 'Short Description', 25, nil, nil } ;
- }
-
- DC_FindBrowse( aFields, nil, nil, nil, 85, 20, ;
- 'Find Record by AutoSeek (Click Right Mouse Button in Header to change Index)', ;
- nil, nil, nil, nil, nil, nil, { aPres, { GRA_CLR_DARKGRAY, GRA_CLR_RED } }, ;
- nil, nil, nil, .5 )
-
- #ifdef EXPRESS17
- DC_FindBrowseSort(aSaveSort)
- #endif
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * ---------------------------- *
-
- STATIC FUNCTION XSample_74
-
- /*
- Demonstration of DC_FindBrowse() # 2
-
- This is a generic find dialog for finding an element in
- a Multidimensional array.
- */
-
- LOCAL aData, nPointer := 1, aDirectory := Directory(), lOk
-
- aData := ;
- { ; // element Header Width Index Prompt
- { 1, 'Name', 12, 1, 'File Name' }, ;
- { 2, 'Size', 12, 2, 'File Size' }, ;
- { 3, 'Date', 12, 3, 'File Date' }, ;
- { 4, 'Time', 12, 4, 'File Time' } ;
- }
-
- lOk := DC_FindBrowse( aData, nil, nil, nil, 75, 20, ;
- 'Find Record by AutoSeek (Click Right Mouse Button in Header to change Index)', ;
- .t., .t., .f., aDirectory, @nPointer )
-
- IF lOk
- DC_MsgBox({'You Selected File: ' + aDirectory[nPointer,1]})
- ENDIF
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * ---------------------------- *
-
- STATIC FUNCTION XSample_75
-
- /*
- Demonstration of DC_FindBrowse() # 3
-
- This is a database picklist (pull-down style).
- */
-
- LOCAL GetList := {}, cType, oType, cCommand, oCommand, cCategory, oCategory
-
- IF !File('..\XDOC\EXPRESS.DBF')
- DC_MsgBox({'Sorry. The database required to show this feature',;
- 'is not included in the demonstration version', ;
- 'or the ..\XDOC\EXPRESS.DBF file does not exist'})
- RETURN nil
- ENDIF
-
- SET DEFA TO ..\XDOC
- USE EXPRESS VIA FOXCDX EXCLUSIVE ALIAS 'XDOC'
- SET INDEX TO EXPRESS.CDX
- OrdSetFocus('COMMAND')
- SET DEFA TO
-
- cType := Space(20)
- @ 1,0 DCSAY 'Type'
- @ 2,0 DCGET cType POPUP {|c|_XSample75(1,oType,c)} GETSIZE 20
- @ 3,0 DCSTATIC XBPSTATIC_TYPE_RECESSEDBOX SIZE 22.5,6 ;
- OBJECT oType EVAL {|o|o:hide()}
-
- cCommand := Space(20)
- @ 1,25 DCSAY 'Command'
- @ 2,25 DCGET cCommand POPUP {|c|_XSample75(2,oCommand,c)} GETSIZE 20
- @ 3,25 DCSTATIC XBPSTATIC_TYPE_RECESSEDBOX SIZE 22.5,6 ;
- OBJECT oCommand EVAL {|o|o:hide()}
-
- cCategory := Space(20)
- @ 1,50 DCSAY 'Category'
- @ 2,50 DCGET cCategory POPUP {|c|_XSample75(3,oCategory,c)} GETSIZE 20
- @ 3,50 DCSTATIC XBPSTATIC_TYPE_RECESSEDBOX SIZE 22.5,6 ;
- OBJECT oCategory EVAL {|o|o:hide()}
-
- DCREAD GUI FIT ADDBUTTONS ;
- SETAPPWINDOW ;
- TITLE 'Using DC_FindBrowse() for a Database Pick-List (Pull-Down style)'
-
- RETURN nil
- /* ----------------------------- */
-
- STATIC FUNCTION _XSample75( nMode, oXbp, c )
-
- LOCAL aFields
-
- oXbp:show()
- IF nMode = 1
- OrdSetFocus('TYPE')
- aFields := { { {||XDOC->type}, 'Type', 180, nil, nil } }
- ELSEIF nMode = 2
- OrdSetFocus('COMMAND')
- aFields := { { {||XDOC->command}, 'Command', 180, nil, nil } }
- ELSEIF nMode = 3
- OrdSetFocus('CATEGORY')
- aFields := { { {||XDOC->category}, 'Category', 180, nil, nil } }
- ENDIF
- IF DC_FindBrowse( aFields, oXbp, 2, 2, ;
- oXbp:currentSize()[1]-4, oXbp:currentSize()[2]-4, nil, .f., .f., .t. )
- c := Eval(aFields[1,1])
- ENDIF
-
- oXbp:hide()
-
- RETURN c
- *** END OF EXAMPLE ***
-
- * ----------------------------- *
-
- STATIC FUNCTION XSample_76
-
- /*
- Example of using DCGRA* commands for Dialogs
- */
-
-
- LOCAL GetList := {}, i, oStatic
-
- @ 0,0 DCSTATIC XBPSTATIC_TYPE_RECESSEDBOX SIZE 80, 15 ;
- OBJECT oStatic ;
- PRESENTATION { { XBP_PP_FGCLR, GRA_CLR_WHITE }, ;
- { XBP_PP_BGCLR, GRA_CLR_WHITE } }
-
- @ .5,3 DCGRASTRING ;
- {'DCGRA* commands are useful when creating dialogs that require', ;
- 'a lot of text, images, lines, boxes or other graphic primitives.', ;
- 'These commands automatically handle locking of presentation space', ;
- 'and repainting of the graphic area' } ;
- FONT '12.Arial Bold Italic' COLOR GRA_CLR_BLUE ROWSPACE 18 PARENT oStatic
-
- @ 5,4 TO 10,76 DCGRABOX FILL GRA_OUTLINEFILL COLOR GRA_CLR_YELLOW PARENT oStatic
-
- @ 6.2,15 DCGRAPROC {|o,c,r|_XSample76(o,c,r)} PARENT oStatic
-
- FOR i := 1 TO 15
- @ 10.5, i*4 TO 13.5, i*4 DCGRALINE COLOR i PARENT oStatic
- @ 10.3 + (.22*i),4 TO 10.3 + (.22*i),56 DCGRALINE COLOR i PARENT oStatic
- NEXT
-
- DCREAD GUI FIT ADDBUTTONS
-
- RETURN nil
-
- /* ---------------------- */
-
- STATIC FUNCTION _XSample76( oPresSpace, nCol, nRow )
-
- LOCAL aTarget, aSource, oBitMap, nResource, i, nSaveCol
-
- nSaveCol := nCol
-
- FOR nResource := 7110 TO 7119
- oBitMap := XbpBitMap():new():create(oPresSpace)
- oBitMap:load( NIL, nResource )
- aTarget := {nCol,nRow,nCol+oBitmap:xSize,nRow+oBitmap:ySize}
- aSource := {0,0,oBitmap:xSize,oBitmap:ySize}
- nCol += oBitmap:xSize + 5
- IF nResource = 7114
- nRow -= 40
- nCol := nSaveCol
- ENDIF
- oBitmap:draw( oPresSpace, aTarget, aSource, , GRA_BLT_BBO_IGNORE )
- oBitmap:destroy()
- NEXT
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- /* ---------------------------- */
-
- STATIC FUNCTION XSample_77()
-
- /*
- Scrolling the Static area of a Window
- */
-
- LOCAL GetList := {}, oStatic1, oStatic2, oStatic3, nVertOffset := 0, ;
- nHorizOffset := 0, nVert, nHoriz, i, j, oVertScroll, oHorizScroll, ;
- lStartUp, GetOptions
-
- @ 0,0 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 60,20 ;
- OBJECT oStatic1
-
- @ .1,.5 DCSTATIC TYPE XBPSTATIC_TYPE_TEXT SIZE 59,19.8 ;
- OBJECT oStatic2 PARENT oStatic1
-
- @ 1,2 DCSTATIC TYPE XBPSTATIC_TYPE_TEXT SIZE 200,300 ;
- OBJECT oStatic3 PARENT oStatic2
-
- FOR i := 1 TO 100 STEP 3
- @ i-1.5, 1 DCGRASTRING 'This is row ' + Alltrim(Str(i)) COLOR i%16 ;
- FONT '14.Arial Bold' PARENT oStatic3
- FOR j := 10 TO 200 STEP 25
- @ i,j DCPUSHBUTTON CAPTION Alltrim(Str(i)) + ' - ' + Alltrim(Str(j)) ;
- SIZE 15,1.2 ACTION {||MsgBox('testing')} PARENT oStatic3
- NEXT
- NEXT
-
- @ 0,60 DCSCROLLBAR DATA nVertOffset SIZE 3,20 ;
- TYPE XBPSCROLL_VERTICAL RANGE 0,2000 ;
- AUTOTRACK ;
- OBJECT oVertScroll ;
- SCROLL { |mp1,x,o| _XSample77_2(mp1,o,oStatic2,oStatic3,nVert,@nVertOffset,2) }
-
- @ 20,0 DCSCROLLBAR DATA nHorizOffset SIZE 60,1 ;
- TYPE XBPSCROLL_HORIZONTAL RANGE 0,1000 ;
- AUTOTRACK ;
- OBJECT oHorizScroll ;
- SCROLL { |mp1,x,o| _XSample77_2(mp1,o,oStatic2,oStatic3,nHoriz,@nHorizOffset,1) }
-
- lStartUp := .t.
- DCGETOPTIONS NOMINBUTTON
- DCREAD GUI FIT ADDBUTTONS ;
- OPTIONS GetOptions ;
- MODAL ;
- TITLE 'Example of a Resizable, Scrollable Static Area' ;
- EVAL {|o|nVert:=oStatic3:currentPos()[2], ;
- nHoriz:=oStatic3:currentPos()[1], ;
- o:reSize := {|a,b,x|_XSample77_1(a,b,x,oStatic1,oStatic2,oStatic3, ;
- oHorizScroll, oVertScroll, @lStartUp )} }
-
- RETURN nil
-
- * --------------------------
-
- STATIC FUNCTION _XSample77_1( aOldSize, aNewSize, oDlg, oStatic1, oStatic2, oStatic3, ;
- oHorizScroll, oVertScroll, lStartUp )
-
- LOCAL nWidth := aNewSize[1] - aOldSize[1]
- LOCAL nHeight := aNewSize[2] - aOldSize[2]
- IF lStartUp
- lStartUp := .f.
- RETURN nil
- ENDIF
- oStatic1:setSize( {oStatic1:currentSize()[1]+nWidth,oStatic1:currentSize()[2]+nHeight} )
- oStatic2:setSize( {oStatic2:currentSize()[1]+nWidth,oStatic2:currentSize()[2]+nHeight} )
- oStatic3:setSize( {oStatic3:currentSize()[1]+nWidth,oStatic3:currentSize()[2]+nHeight} )
- oHorizScroll:setSize( {oHorizScroll:currentSize()[1]+nWidth,oHorizScroll:currentSize()[2]} )
- oVertScroll:setSize( {oVertScroll:currentSize()[1],oVertScroll:currentSize()[2]+nHeight} )
- oVertScroll:setPos( {oVertScroll:currentPos()[1]+nWidth,oVertScroll:currentPos()[2]} )
-
- RETURN nil
-
- * --------------------------
-
- STATIC FUNCTION _XSample77_2( a, oScroll, oStatic2, oStatic3, nStart, nOffset, nScroll )
-
- LOCAL nEvent, mp1, mp2, oXbp
-
- nEvent := DC_NextAppEvent(@mp1,@mp2,@oXbp)
- IF nEvent = xbeSB_Scroll
- RETURN nil
- ENDIF
-
- IF a[2] == XBPSB_NEXTPAGE
- nOffset += oStatic2:currentSize()[nScroll]
- oScroll:setData()
- ELSEIF a[2] == XBPSB_PREVPAGE
- nOffset -= oStatic2:currentSize()[nScroll]
- oScroll:setData()
- ELSE
- nOffset := a[1]
- ENDIF
- IF nScroll = 2
- oStatic3:setPos({oStatic3:currentPos()[1],nStart+nOffset})
- ELSE
- oStatic3:setPos({nStart-nOffset,oStatic3:currentPos()[2]})
- ENDIF
-
- RETURN nil
- *** END OF EXAMPLE ***
-
-
- /* ---------------------------- */
-
- STATIC FUNCTION XSample_78()
-
- /*
- Displaying a Report using DCGRA* commands in a scrollable Window
- */
-
- LOCAL GetList := {}, oStatic1, oStatic2, oStatic3, nVertOffset := 0, ;
- nHorizOffset := 0, nVert, nHoriz, i, j, oVertScroll, oHorizScroll, ;
- nScrollRange, lStartUp, GetOptions, nEvent, mp1, mp2, oXbp, ;
- oDialog
-
- IF !File('..\XDOC\EXPRESS.DBF')
- DC_MsgBox({'Sorry. The database required to show this feature',;
- 'is not included in the demonstration version', ;
- 'or the ..\XDOC\EXPRESS.DBF file does not exist'})
- RETURN nil
- ENDIF
-
- SET DEFA TO ..\XDOC
- USE EXPRESS VIA FOXCDX EXCLUSIVE ALIAS 'XDOC'
- SET INDEX TO EXPRESS.CDX
- OrdSetFocus('MODULE')
- SET DEFA TO
-
- @ 0,0 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 60,20 ;
- OBJECT oStatic1
-
- @ .1,.5 DCSTATIC TYPE XBPSTATIC_TYPE_TEXT SIZE 59,19.8 ;
- OBJECT oStatic2 PARENT oStatic1
-
- @ 1,2 DCSTATIC TYPE XBPSTATIC_TYPE_TEXT SIZE 200,300 ;
- OBJECT oStatic3 PARENT oStatic2 COLOR GRA_CLR_WHITE, GRA_CLR_WHITE
-
- i := 1
- DC_SetScope(0,'FUNCTION')
- DC_SetScope(1,'FUNCTION')
- DC_DbGoTop()
- @ 1,1 DCGRASTRING 'GUI Function List (Module FUNCGUI)' ;
- COLOR GRA_CLR_RED, GRA_CLR_BLACK ;
- FONT '16.Arial Bold' PARENT oStatic3
- i += 2
- nScrollRange := 0
- DO WHILE !DC_Eof()
- @ i,1 DCGRASTRING 'Function: ' COLOR GRA_CLR_BLUE ;
- PARENT oStatic3 FONT '12.Courier New'
- @ i,18 DCGRASTRING XDOC->command PARENT oStatic3 ;
- FONT '12.Courier New Bold' COLOR GRA_CLR_YELLOW
- @ i+1,5 DCGRASTRING XDOC->short PARENT oStatic3 ;
- COLOR GRA_CLR_DARKPINK FONT '12.Arial'
- i += 2
- DC_DbSkip(1)
- nScrollRange += 40
- ENDDO
-
- @ 0,60 DCSCROLLBAR DATA nVertOffset SIZE 3,20 ;
- TYPE XBPSCROLL_VERTICAL RANGE 0, nScrollRange ;
- AUTOTRACK ;
- OBJECT oVertScroll ;
- SCROLL { |mp1,x,o| _XSample77_2(mp1,o,oStatic2,oStatic3,nVert,@nVertOffset,2) }
-
- @ 20,0 DCSCROLLBAR DATA nHorizOffset SIZE 60,1 ;
- TYPE XBPSCROLL_HORIZONTAL RANGE 0, 1000 ;
- AUTOTRACK ;
- OBJECT oHorizScroll ;
- SCROLL { |mp1,x,o| _XSample77_2(mp1,o,oStatic2,oStatic3,nHoriz,@nHorizOffset,1) }
-
- lStartUp := .t.
-
- DCGETOPTIONS NOMINBUTTON AUTORESIZE
-
- DCREAD GUI FIT ADDBUTTONS ;
- MODAL ;
- OPTIONS GetOptions ;
- TITLE 'Example of a Scrollable Screen Report' ;
- EVAL {|o|nVert:=oStatic3:currentPos()[2], ;
- nHoriz:=oStatic3:currentPos()[1]}
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * ------------------------------
-
- STATIC FUNCTION XSample_79()
- /*
- This is an example of a Hybrid of standard GETS and DCPUSHBUTTONs.
- By default DC* commands work with a variable named GetList which
- conflicts with text-based GETS. The DC* GetList can be defined
- as any other variable by using #DEFINE DCGUI_GETLIST
- */
-
- #define DCGUI_GETLIST aMyGuiGetList // ignore compiler warning
-
- LOCAL cName, cCompany, cAddress, cState, cZip, cPhone, aMyGuiGetList := {}, ;
- oCrt, oOldAppWindow, getList := {}
-
- oCrt := XbpCrt():New ( AppDeskTop(), NIL, { 0, 0 }, 25, 80 )
- oCrt:FontWidth := 8
- oCrt:FontHeight := 16
- oCrt:title := 'Hybrid example, Standards Gets and GUI buttons'
- oCrt:create()
- oCrt:presSpace()
- oCrt:maximize()
- oCrt:show()
- oOldAppWindow := SetAppWindow(oCrt)
- SET COLOR TO 'N/W,GR+/R,GR+/R,,GR+/R'
- CLS
- SET CURSOR ON
- STORE Space(20) TO cName, cCompany, cAddress, cPhone
- STORE Space(10) TO cZip, cState
-
- @ 7,10 SAY ' Name' GET cName
- @ 8,10 SAY ' Company' GET cCompany
- @ 9,10 SAY ' Address' GET cAddress
- @10,10 SAY ' State' GET cState
- @11,10 SAY ' Zip' GET cZip
- @12,10 SAY ' Phone' GET cPhone
-
- @ 14,10 DCPUSHBUTTON CAPTION 'Ok' ;
- ACTION {||ReadKill(.t.)} ;
- SIZE 10,2 PARENT oCrt
-
- @ 14,22 DCPUSHBUTTON CAPTION 'Cancel' ;
- ACTION {||_Keyboard(Chr(K_ESC))} ;
- SIZE 10,2 PARENT oCrt
-
- DCREAD GUI EXIT SAVE PARENT oCrt
- READ
-
- oCrt:Destroy()
- DC_GetDestroy(aMyGuiGetList)
- SetAppWindow(oOldAppWindow)
-
- #define DCGUI_GETLIST GetList // ignore compiler warning
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * ------------------------------
-
- STATIC FUNCTION XSample_80()
-
- /*
- This is an example of a hybrid application
- */
-
- LOCAL GetList := {}, oCrt, oAppWindow := SetAppWindow()
-
- // Create XbpCRT object
- oCrt := XbpCrt():New ( AppDeskTop(), NIL, {0,0}, 25, 80 )
- oCrt:FontWidth := 8
- oCrt:FontHeight := 16
- oCrt:FontName := 'Alaska Crt'
- oCrt:tasklist := .T.
- oCrt:title := 'Test Hybrid Application'
- oCrt:create()
- oCrt:presSpace()
- SetAppWindow(oCrt)
-
- CLS
-
- @ 2,10 SAY 'This is an example of a hybrid application that imbeds'
- @ 3,10 SAY 'a hybrid Menu into the Application window.'
-
- @ 5,10 SAY 'The subroutines called by the hybrid menu will also be'
- @ 6,10 SAY 'imbedded in the Application window.'
-
- @ 8,10 SAY 'Press any key to continue...'
- Inkey(0)
-
- BEGIN SEQUENCE
-
- IF !File('..\XDOC\EXPRESS.DBF')
- DC_Gui(.f.)
- DC_MsgBox({'Sorry. The database required to show this feature',;
- 'is not included in the demonstration version', ;
- 'or the ..\XDOC\EXPRESS.DBF file does not exist'})
- BREAK
- ENDIF
-
- SET DEFA TO ..\XDOC
- USE EXPRESS VIA FOXCDX EXCLUSIVE ALIAS 'XDOC'
- SET INDEX TO EXPRESS.CDX
- OrdSetFocus('COMMAND')
- SET DEFA TO
-
- _XSample_80() // Load Menu
-
- END SEQUENCE
-
- SetAppWindow(oAppWindow)
- oCrt:Destroy()
-
- RETURN nil
-
- * ------------------------
-
- STATIC FUNCTION _XSample_80()
-
- LOCAL GetList := {}
- LOCAL oOldWindow := SetAppFocus()
- LOCAL oAppWindow := SetAppWindow()
- LOCAL nHeight := oAppWindow:currentSize()[2]
- LOCAL nWidth := oAppWindow:currentSize()[1]
- LOCAL cAlias := Alias()
- LOCAL nChoice, oStatic, GetOptions
-
- @ 15,15 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX ;
- OBJECT oStatic SIZE nWidth - 30, nHeight - 40 PIXEL
-
- @ 0,0 TO 20, nWidth DCGRABOX FILL 1 ;
- COLOR GRA_CLR_DARKGRAY PIXEL PARENT oStatic
-
- @ nHeight-40-20,0 TO nHeight-40, nWidth DCGRABOX FILL 1 ;
- COLOR GRA_CLR_DARKGRAY PIXEL PARENT oStatic
-
- @ 3, 35 DCGRASTRING 'Main Menu' FONT '14.Arial Bold' COLOR GRA_CLR_RED ;
- PARENT oStatic
-
- @ 5,20 DCPUSHBUTTON CAPTION '~Browse the Database' SIZE 50,1.4 ;
- ACTION {||nChoice:=1,DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
- TOOLTIP 'Browse the XDOC Database' ;
- FONT '10.Alaska Crt' ;
- PARENT oStatic ;
- ACCELKEY xbeK_ALT_B ;
- TABSTOP
-
- @ 7.2,20 DCPUSHBUTTON CAPTION '~Edit the Database' SIZE 50,1.4 ;
- ACTION {||nChoice:=2,DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
- TOOLTIP 'Edit the XDOC Database' ;
- FONT '10.Alaska Crt' ;
- PARENT oStatic ;
- ACCELKEY xbeK_ALT_E ;
- TABSTOP
-
- @ 9.4,20 DCPUSHBUTTON CAPTION '~Print the Database' SIZE 50,1.4 ;
- ACTION {||nChoice:=3,DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
- TOOLTIP 'Print the XDOC Database Report' ;
- FONT '10.Alaska Crt' ;
- PARENT oStatic ;
- ACCELKEY xbeK_ALT_P ;
- TABSTOP
-
- @11.6,20 DCPUSHBUTTON CAPTION '~Copy the Database' SIZE 50,1.4 ;
- ACTION {||nChoice:=4,DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
- TOOLTIP 'Copy the XDOC Database to another Directory' ;
- FONT '10.Alaska Crt' ;
- PARENT oStatic ;
- ACCELKEY xbeK_ALT_C ;
- TABSTOP
-
- @13.8,20 DCPUSHBUTTON CAPTION 'e~Xit this Program' SIZE 50,1.4 ;
- ACTION {||nChoice:=0,DC_ReadGuiEvent(DCGUI_EXIT_ABORT,GetList)} ;
- TOOLTIP 'Exit the Program' ;
- FONT '10.Alaska Crt' ;
- PARENT oStatic ;
- ACCELKEY xbeK_ALT_X ;
- TABSTOP
-
- DCGETOPTIONS ;
- NOTITLEBAR ;
- HIDE
-
- nChoice := 1
-
- DO WHILE nChoice > 0
-
- DCREAD GUI FIT SAVE ;
- SETFOCUS oStatic ;
- OPTIONS GetOptions ;
- EVAL {|o|o:setParent(oAppWindow), ;
- DC_CenterObject(o), ;
- o:Show() }
-
- DO CASE
-
- CASE nChoice = 1
- _XSample_80_1() // Browse
-
- CASE nChoice = 2 // Edit
- CLS
- @ 10,10 SAY 'This is the EDIT screen'
- @ 12,10 SAY 'Press any key to continue...'
- Inkey(0)
-
- CASE nChoice = 3 // Print
- CLS
- @ 10,10 SAY 'This is the PRINT screen'
- @ 12,10 SAY 'Press any key to continue...'
- Inkey(0)
-
- CASE nChoice = 4 // Copy
- CLS
- @ 10,10 SAY 'This is the COPY screen'
- @ 12,10 SAY 'Press any key to continue...'
- Inkey(0)
-
- ENDCASE
-
- ENDDO
-
- RETURN nil
-
- * ---------------------
-
- STATIC FUNCTION _XSample_80_1()
-
- LOCAL GetList := {}, GetOptions, oStatic, lOk
- LOCAL oOldWindow := SetAppFocus()
- LOCAL oAppWindow := SetAppWindow()
- LOCAL cOldTitle := oAppWindow:getTitle()
- LOCAL nHeight := oAppWindow:currentSize()[2]
- LOCAL nWidth := oAppWindow:currentSize()[1]
- LOCAL cAlias := Alias()
- LOCAL oBrowse, aBrowPres
-
- aBrowPres := ;
- { { XBP_PP_COL_HA_FGCLR, GRA_CLR_WHITE }, /* Header FG Color */ ;
- { XBP_PP_COL_HA_BGCLR, GRA_CLR_DARKGRAY }, /* Header BG Color */ ;
- { XBP_PP_COL_DA_ROWSEPARATOR, XBPCOL_SEP_DOTTED }, /* Row Sep */ ;
- { XBP_PP_COL_DA_COLSEPARATOR, XBPCOL_SEP_DOTTED }, /* Col Sep */ ;
- { XBP_PP_COL_DA_FGCLR, GRA_CLR_BLACK }, /* Row FG Color */ ;
- { XBP_PP_COL_DA_BGCLR, GRA_CLR_WHITE } /* Row BG Color */ ;
- }
-
- @ 15,15 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX ;
- OBJECT oStatic SIZE nWidth - 30, nHeight - 40 PIXEL
-
- @ 1,5 DCBROWSE oBrowse SIZE 80,15 ALIAS cAlias ;
- PRESENTATION aBrowPres PARENT oStatic
-
- DCBROWSECOL FIELD XDOC->command PARENT oBrowse HEADER 'Command'
- DCBROWSECOL FIELD XDOC->short PARENT oBrowse HEADER 'Short Description'
- DCBROWSECOL FIELD XDOC->module PARENT oBrowse HEADER 'Module'
- DCBROWSECOL FIELD XDOC->type PARENT oBrowse HEADER 'Type'
- DCBROWSECOL FIELD XDOC->category PARENT oBrowse HEADER 'Category'
-
- @ 17,5 DCPUSHBUTTON CAPTION 'e~Xit' SIZE 9,1.2 ;
- ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
- ACCELKEY xbeK_ALT_X PARENT oStatic
-
- DCGETOPTIONS ;
- NORESIZE ;
- NOTITLEBAR ;
- HIDE ;
- WINDOWHEIGHT nHeight + 10 ;
- WINDOWWIDTH nWidth + 10
-
- DCREAD GUI ;
- OPTIONS GetOptions ;
- TO lOk ;
- EVAL {|o|SetAppFocus(oBrowse:GetColumn(1)), ;
- o:setParent(oAppWindow), ;
- o:setPos({-5,-5}), ;
- oBrowse:show(), ;
- o:show() }
-
- oAppWindow:setTitle(cOldTitle)
-
- RETURN lOk
- *** END OF EXAMPLE ***
-
- * ------------------------------
-
- STATIC FUNCTION XSample_81()
-
- /*
- This example uses the DCGUI_ROW and DCGUI_COL manifest constants to
- emulate Row() and Col() in text mode screens.
- */
-
- LOCAL GetList := {}, aGets1[5], aGets2[5], i
-
- AFILL(aGets1,Space(8))
- AFILL(aGets2,Space(15))
-
- @ 1,1 DCSAY ''
- FOR i := 1 TO Len(aGets1)
- @ _Row(), _Col() DCSAY 'Get ' + Alltrim(Str(i)) GET aGets1[i] SAYRIGHT
- NEXT
-
- @ 3,1 DCSAY ''
- FOR i := 1 TO Len(aGets2)
- @ DCGUI_ROW, DCGUI_COL DCGET aGets2[i]
- NEXT
-
- DCREAD GUI FIT ADDBUTTONS TITLE 'Row() and Col() emulation'
-
- RETURN nil
-
- * ---------------------
-
- STATIC FUNCTION _Row()
-
- RETURN DCGUI_ROW
-
- * ---------------------
-
- STATIC FUNCTION _Col()
-
- RETURN DCGUI_COL + 10
-
- *** END OF EXAMPLE ***
-
- * ------------------------------
-
- STATIC FUNCTION XSample_82()
- /*
- This is an example of using the COMBO clause of DCGET to create
- a combo-box replacement for both a database and an array
- picklist.
- */
-
- LOCAL GetList := {}, cCommand := Space(25), cFileName := Space(12), ;
- aDirectory := Directory('*.*'), GetOptions, aCaption
-
- IF !File('..\XDOC\EXPRESS.DBF')
- DC_MsgBox({'Sorry. The database required to show this feature',;
- 'is not included in the demonstration version', ;
- 'or the ..\XDOC\EXPRESS.DBF file does not exist'})
- RETURN nil
- ENDIF
-
- SET DEFA TO ..\XDOC
- USE EXPRESS VIA FOXCDX EXCLUSIVE ALIAS 'XDOC'
- SET INDEX TO EXPRESS.CDX
- OrdSetFocus('COMMAND')
- SET DEFA TO
-
- aCaption := DC_GETPOPUPCAPTION( { '10.Marlett', 'u', 1 } ) // down arrow , imbedded
-
- @ 1,1 DCSAY 'Command'
- @ 2,1 DCGET cCommand ;
- COMBO HEIGHT 7 DATA 'XDOC' FIELD {||XDOC->command} ;
- HELPCODE 'dc_readgui()'
-
- @ 1,38 DCSAY 'File Name'
- @ 2,38 DCGET cFileName COMBO HEIGHT 7 DATA aDirectory ELEMENT 1
-
- @ 10,1 DCSAY ''
-
- DCGETOPTIONS HELPFILE '\EXPRESS\DOC\EXPRESS.HLP'
-
- DCREAD GUI FIT ADDBUTTONS TITLE 'Get with COMBO clause' ;
- OPTIONS GetOptions
-
- DC_GetPopupCaption(aCaption)
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * ------------------------------
-
- STATIC FUNCTION XSample_83()
-
- /*
- This is an example of using the GRAPHICS clause of DCPUSHBUTTON
- and DCGRA* commands to create Pushbuttons with graphics and
- multiple lines of text.
- */
-
- LOCAL GetList := {}, oButton1, oButton2, oStatic
-
- @ 1,1 DCPUSHBUTTON PIXEL ;
- SIZE 300,200 OBJECT oButton1 GRAPHICS ;
- ACTION {||DC_MsgBox('I been Pushed!'), ;
- oButton1:invalidateRect(), ;
- oButton2:invalidateRect()}
-
- @ 4,4 TO 50,296 DCGRABOX PIXEL COLOR GRA_CLR_YELLOW FILL 1 PARENT oButton1
-
- @ 150,4 TO 196,296 DCGRABOX PIXEL COLOR GRA_CLR_YELLOW FILL 1 PARENT oButton1
-
- @ 80,50 DCGRASTRING {'Please Push Me!','I like it!'} ;
- PIXEL PARENT oButton1 COLOR GRA_CLR_RED ;
- FONT '18.Arial Bold'
-
- @ 210,1 DCPUSHBUTTON PIXEL ;
- SIZE 300,200 OBJECT oButton2 GRAPHICS ;
- ACTION {||DC_MsgBox('I been Pushed Too!'), ;
- oButton1:invalidateRect(), ;
- oButton2:invalidateRect()}
-
- @ 4,4 TO 50,296 DCGRABOX PIXEL COLOR GRA_CLR_GREEN FILL 1 PARENT oButton2
-
- @ 150,4 TO 196,296 DCGRABOX PIXEL COLOR GRA_CLR_GREEN FILL 1 PARENT oButton2
-
- @ 90,20 DCGRASTRING 'Please Push Me Too!' ;
- PIXEL PARENT oButton2 COLOR GRA_CLR_BLUE ;
- FONT '18.Arial Bold'
-
- DCREAD GUI FIT ADDBUTTONS TITLE 'Push-Buttons with Graphics' ;
- EVAL {|o|SetAppWindow(o)}
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * ------------------------------
-
- STATIC FUNCTION XSample_84()
-
- /*
- This is an example of using the HELPCODE clause of DC*
- commands to create a context-specific link to a Windows
- Help file. The first 4 gets have a context-specific link.
- The last get has no context specific link. Pressing F1
- when none of the first 4 gets has focus will cause the
- general link (GETTING STARTED) to be invoked.
- */
-
- LOCAL GetList := {}, cCommand := Space(20), GetOptions, cHelpTip, bHelpBlock
-
- cHelpTip := 'For HELP, Click here, then press F1;' + ;
- ' - OR - ; ' + ;
- 'Double-Click the Left Mouse Button' ;
-
- bHelpBlock := {|o|o:lbDblClick := {|a,b,o|PostAppEvent(xbeP_HelpRequest,a,b,o)} }
-
- @ 1,1 DCSAY 'dc_readgui()' GET cCommand HELPCODE 'dc_readgui()' ;
- GETTOOLTIP cHelpTip GETEVAL bHelpBlock ;
- MESSAGE 'Press F1 for Context Help (dc_readgui())'
-
- @ 3,1 DCSAY 'dc_printer()' GET cCommand HELPCODE 'dc_printer()' ;
- GETTOOLTIP cHelpTip GETEVAL bHelpBlock ;
- MESSAGE 'Press F1 for Context Help (dc_printer())'
-
- @ 5,1 DCSAY ' dc_expl()' GET cCommand HELPCODE 'dc_expl()' ;
- GETTOOLTIP cHelpTip GETEVAL bHelpBlock ;
- MESSAGE 'Press F1 for Context Help (dc_expl())'
-
- @ 7,1 DCSAY 'DCGETOPTIONS' GET cCommand HELPCODE 'DCGETOPTIONS' ;
- GETTOOLTIP cHelpTip GETEVAL bHelpBlock ;
- MESSAGE 'Press F1 for Context Help (DCGETOPTIONS)'
-
- @ 9,1 DCSAY 'NON-CONTEXT' GET cCommand ;
- GETTOOLTIP cHelpTip GETEVAL bHelpBlock ;
- MESSAGE 'Press F1 for General Help (Getting Started)'
-
- @11,1 DCMESSAGEBOX SIZE 60,1.5 COLOR GRA_CLR_BLUE, GRA_CLR_WHITE ;
- FONT '10,Arial Bold'
-
- DCGETOPTIONS HELPFILE '\EXPRESS\DOC\EXPRESS.HLP' ;
- SAYRIGHTJUST ;
- SAYWIDTH 120 ;
- HELPCODE 'GETTINGSTARTED'
-
- DCREAD GUI FIT ADDBUTTONS OPTIONS GetOptions ;
- TITLE 'Help Link Demonstration (Press F1)'
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * --------------------
-
- STATIC FUNCTION XSample_85( lSaveGets, lSaveGetList )
-
- /*
- This example shows how to squeeze a lot of Gets into a dialog.
- It uses the ROWPIXELS and COLPIXELS clause and DCGRASTRING
- instead of DCSAY for better performance and lower utilization
- of resources.
- */
-
- LOCAL GetList := {}, GetOptions, aGets[80], i, j, n, ;
- oWait := DC_WaitOn(), aGetsRead, lBuildGets := .t.
-
- DEFAULT lSaveGets := .f., lSaveGetList := .f.
-
- IF lSaveGets
-
- @ -4,0 DCSAY ;
- 'Enter data into various GETS then click on SAVE GETS. '
- @ -3,0 DCSAY ;
- 'Change the data in the GETS then Click on REST GETS. '
-
- @ -1,30 DCPUSHBUTTON CAPTION '~Save Gets' ;
- SIZE 14,2 ;
- ACTION {|| MemoWrit('AGETS.VAR',Var2Bin(aGets)) }
-
- @ -1,45 DCPUSHBUTTON CAPTION '~Rest Gets' ;
- SIZE 14,2 ;
- ACTION {||aGetsRead := Bin2Var(MemoRead('AGETS.VAR')), ;
- AEval(aGetsRead,{|x,i|aGets[i]:=x}), ;
- DC_GetRefresh(GetList) }
-
- ENDIF
-
- IF lSaveGetList
-
- IF File('GETLIST.VAR')
-
- GetList := Bin2Var(MemoRead('GETLIST.VAR'))
- FOR i := 1 TO 80
- aGets[i] := i
- NEXT
- lBuildGets := .f.
-
- ELSE
-
- @ -5,0 DCSAY ;
- 'Click on SAVE GETLIST to save the GetList Array to Disk. '
- @ -4,0 DCSAY ;
- 'Exit this dialog and Start it again to load Getlist from Disk. '
-
- @ -1,30 DCPUSHBUTTON CAPTION '~Save GetList' ;
- SIZE 14,2 ;
- ACTION {|| MemoWrit('GETLIST.VAR',Var2Bin(GetList)), ;
- DC_MsgBox({'Getlist saved to GETLIST.VAR', ;
- 'Now exit this dialog and come back in again.'}) }
- ENDIF
-
- ENDIF
-
- IF lBuildGets
-
- @ -1,0 DCPUSHBUTTON CAPTION '~Ok' ;
- SIZE 14,2 ;
- ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}
-
- @ -1,15 DCPUSHBUTTON CAPTION '~Cancel' ;
- SIZE 14,2 ;
- ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_ABORT,GetList)}
-
- n := 0
- FOR i := 1 TO 20
-
- FOR j := 1 TO 4
-
- n++
- aGets[n] := n
-
- @ i,((j-1)*25+2) DCGRASTRING 'Row ' + Alltrim(Str(i)) + ' Col ' + Alltrim(Str(j)) ;
- FONT '7.Helv' SIZE 12
-
- @ i+.4,((j-1)*25+13) DCGET aGets[n] ;
- GETFONT '8.Terminal' ;
- GETSIZE 6,.7 ;
- PICTURE '9999' ;
- TABSTOP
-
- NEXT
-
- NEXT
-
- ENDIF
-
- DCGETOPTIONS ;
- ROWPIXELS 9 ;
- COLPIXELS 5 ;
- HILITEGETS GRA_CLR_GREEN
-
- DCREAD GUI ;
- FIT ;
- OPTIONS GetOptions ;
- TITLE 'Small Gets' ;
- EVAL {|o|DC_Impl(oWait), ;
- SetAppWindow(o),;
- IIF(!lBuildGets,DC_MsgBox('GetList restored from GETLIST.VAR'),nil)}
-
- RETURN aGets
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_86()
-
- /*
- This example shows how to Save and Restore an array of Gets
- using Var2Bin() and Bin2Var.
- */
-
- RETURN XSample_85(.t.,.f.) // Small Gets
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_87()
-
- /*
- This example shows how to Save and Restore the GetList
- using Var2Bin() and Bin2Var.
- */
-
- RETURN XSample_85(.f.,.t.) // Small Gets
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_88()
-
- /*
- This example shows how to save the Getlist, GetOptions and
- application data using design mode.
- */
-
- LOCAL GetList := {}, GetOptions, aGets[10], lBuildGets := .t., aApp, ;
- oStatic
-
- IF File('APP1.VAR')
-
- aApp := Bin2Var(MemoRead('APP1.VAR'))
- GetList := aApp[1]
- GetOptions := aApp[2]
- aGets := aApp[3]
- lBuildGets := .f.
-
- ENDIF
-
- IF lBuildGets
-
- AFill(aGets,Space(20))
-
- @ 1,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 80, 20 ;
- OBJECT oStatic
-
- DCHOTKEY xbeK_ALT_D ACTION {||DC_GetDesign(GetList),.t.}
-
- @ 1,5 DCSAY ;
- 'Click on "Save Application" to save the Application Arrays to disk.' ;
- SAYSIZE 55 PARENT oStatic
-
- @ 2,5 DCPUSHBUTTON CAPTION '~Ok' ;
- SIZE 15,1.2 PARENT oStatic ;
- ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}
-
- @ 2,23 DCPUSHBUTTON CAPTION '~Cancel' ;
- SIZE 15,1.2 PARENT oStatic ;
- ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_ABORT,GetList)}
-
- @ 2,41 DCPUSHBUTTON CAPTION '~Save Application' ;
- SIZE 15,1.2 PARENT oStatic ;
- ACTION {|| MemoWrit('APP1.VAR',Var2Bin({GetList,GetOptions,aGets})), ;
- DC_MsgBox({'Getlist saved to APP1.VAR', ;
- 'Now exit this dialog and come back in again.'}) }
-
- @ 4,5 DCSAY ' Name' GET aGets[1] PARENT oStatic
- @ 6,5 DCSAY 'Address' GET aGets[2] PARENT oStatic
- @ 8,5 DCSAY ' City' GET aGets[3] PARENT oStatic
- @10,5 DCSAY ' State' GET aGets[4] PARENT oStatic
- @12,5 DCSAY ' ZIP' GET aGets[5] PARENT oStatic
- @14,5 DCSAY ' Phone' GET aGets[6] PARENT oStatic
-
- @ 4,45 DCSAY 'Memo ' PARENT oStatic
- @ 5,45 DCMULTILINE aGets[7] SIZE 30,10 PARENT oStatic
-
- DCGETOPTIONS ;
- HILITEGETS GRA_CLR_YELLOW
-
- ENDIF
-
- DCREAD GUI ;
- MODAL ;
- _FIT lBuildGets ;
- OPTIONS GetOptions ;
- TITLE 'Design Mode, Press Alt-D to Drag Objects' ;
- EVAL {||IIF(!lBuildGets,DC_MsgBox('GetList restored from APP1.VAR'),nil)}
-
- RETURN GetList
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_89()
-
- /*
- This example shows how to use the HANDLER clause of DCREAD GUI
- to control the behavior of a Dialog.
- */
-
- LOCAL GetList := {}, GetOptions, aApp[2]
-
- aApp[1] := Date()-100
- aApp[2] := 12345.67
-
- @ 1,1 DCSAY ' Enter a Date' GET aApp[1] POPUP {|d|DC_PopDate(d)} ;
- SAYRIGHT
- @ 2,1 DCSAY "Press F2 for Today's Date"
-
- @ 4,1 DCSAY 'Enter a Number' GET aApp[2] POPUP {|n|DC_PopCalc(n)} ;
- SAYRIGHT PICT '99999.99'
- @ 5,1 DCSAY 'Press F3 to Clear Entry'
-
- @ 8,1 DCSAY 'Press F10 to EXIT' SAYSIZE 40 FONT '12.Helv Bold'
-
- DCREAD GUI FIT ADDBUTTONS MODAL ;
- HANDLER XSample_89_Handler REFERENCE aApp
-
- RETURN nil
-
- /* ------------------------- */
-
- STATIC FUNCTION ;
- XSample_89_Handler ( nEvent, mp1, mp2, oXbp, oDialog, GetList, aApp )
-
- IF nEvent = xbeP_Keyboard .AND. mp1 == xbeK_F2
- aApp[1] := Date()
- DC_GetRefresh(GetList)
- ELSEIF nEvent = xbeP_Keyboard .AND. mp1 == xbeK_F3
- aApp[2] := 0
- DC_GetRefresh(GetList)
- ELSEIF nEvent = xbeP_Keyboard .AND. mp1 == xbeK_F10
- RETURN DCGUI_EXIT_OK
- ENDIF
-
- RETURN DCGUI_NONE
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_90()
-
- /*
- This example shows how to use the HANDLER clause of DCREAD GUI
- and DCQOUT / DCQQOUT commands for debugging.
- */
-
- LOCAL GetList := {}, aApp[2]
-
- aApp[1] := Date()-100
- aApp[2] := 12345.67
-
- @ 1,1 DCSAY ' Enter a Date' GET aApp[1] POPUP {|d|DC_PopDate(d)} ;
- SAYRIGHT
-
- @ 4,1 DCSAY 'Enter a Number' GET aApp[2] POPUP {|n|DC_PopCalc(n)} ;
- SAYRIGHT PICT '99999.99'
-
- DCREAD GUI FIT MODAL ADDBUTTONS HANDLER XSample_90_Handler REFERENCE aApp
-
- RETURN nil
-
- /* ------------------------- */
-
- STATIC FUNCTION ;
- XSample_90_Handler ( nEvent, mp1, mp2, oXbp, oDialog, GetList, aApp )
-
- IF nEvent # xbeM_Motion
- DCQOUT DC_AppEventDefine(nEvent), mp1, mp2, aApp
- IF Valtype(oXbp) = 'O'
- DCQQOUT oXbp:ClassName()
- ENDIF
- ENDIF
-
- RETURN DCGUI_NONE
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_91()
-
- /*
- This example shows how to resize objects on a dialog that
- has been resized by the user.
- */
-
- LOCAL GetList := {}, cMemo1, cMemo2, oMemo1, oMemo2
-
- cMemo1 := 'This is memo window 1'
- cMemo2 := 'This is memo window 2'
-
- @ 1,1 DCMULTILINE cMemo1 OBJECT oMemo1 SIZE 70,10
- @ 12,1 DCMULTILINE cMemo2 OBJECT oMemo2 SIZE 70,10
-
- DCREAD GUI FIT ;
- TITLE 'Resize the dialog window and watch what happens to memo windows' ;
- EVAL {|o|o:resize := {|a,b,o|_XSample_91(o,oMemo1,oMemo2)} }
-
- RETURN nil
-
- * --------------------
-
- STATIC FUNCTION _XSample_91( oDlg, oMemo1, oMemo2 )
-
- LOCAL oDrawingArea := oDlg:drawingArea, nWidth, nHeight
-
- nWidth := oDrawingArea:currentSize()[1]
- nHeight := oDrawingArea:currentSize()[2]
-
- oMemo1:setSize( { nWidth-30, (nHeight/2-40) } )
- oMemo2:setSize( { nWidth-30, (nHeight/2-40) } )
- oMemo1:setPos( { oMemo2:currentPos()[1], ;
- oMemo2:currentPos()[2] + oMemo2:currentSize()[2] + 20 } )
-
- RETURN nil
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_92()
-
- /*
- This example shows how to use the DCTREEROOT and DCTREEITEM
- commands to build a tree system.
- */
-
- LOCAL GetList := {}, oTree, oSubTree1, oSubTree2, cSelected
-
- @ 1,1 DCTREEROOT SIZE 30,10 OBJECT oTree ;
- HASLINES ;
- HASBUTTONS ;
- ITEMSELECTED {|o| cSelected := o:caption, ;
- DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}
-
- DCTREEITEM CAPTION 'SubTree 1' PARENT oTree OBJECT oSubTree1
- DCTREEITEM CAPTION 'Sub-SubTree 1/1' PARENT oSubTree1
- DCTREEITEM CAPTION 'Sub-SubTree 1/2' PARENT oSubTree1
- DCTREEITEM CAPTION 'Sub-SubTree 1/3' PARENT oSubTree1
-
- DCTREEITEM CAPTION 'SubTree 2' PARENT oTree OBJECT oSubTree2
- DCTREEITEM CAPTION 'Sub-SubTree 2/1' PARENT oSubTree2
- DCTREEITEM CAPTION 'Sub-SubTree 2/2' PARENT oSubTree2
- DCTREEITEM CAPTION 'Sub-SubTree 2/3' PARENT oSubTree2
-
- DCREAD GUI FIT ADDBUTTONS MODAL
-
- DC_MsgBox({'You Selected:',cSelected})
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * --------------------
-
- STATIC FUNCTION XSample_93()
-
- /*
- This example shows how to use the DCTREEROOT and DCTREEITEM
- commands to build a tree menu system.
- */
-
- LOCAL GetList := {}, oMenu, oFileMenu, oPrintMenu, oEditMenu, ;
- cDocument := Space(60), cMemo := '', oMemo, oStatic1, ;
- oStatic2, oMsgBox, cSaveDir := DC_CurPath()
-
- @ 1,4 DCSAY '--- MAIN MENU --- ' FONT '12.Arial Bold'
-
- @ 2,1 DCSTATIC TYPE XBPSTATIC_TYPE_TEXT SIZE 25,11 OBJECT oStatic1 ;
- FONT '10.Arial Bold'
-
- @ 0,0 DCTREEROOT SIZE 25,11 OBJECT oMenu ;
- HASLINES HASBUTTONS PARENT oStatic1 ;
- TOOLTIP 'Double-Click a main-menu item to expand/collapse sub-menu;' + ;
- 'Double-Click a sub-menu item to select' ;
- EVAL {|o|o:keyboard := {|a,b,o|_TreeKeyboard(a,b,o,GetList)} }
-
- DCTREEITEM CAPTION 'File' PARENT oMenu OBJECT oFileMenu ;
- MESSAGE 'These are File Options' INTO oMsgBox
-
- DCTREEITEM CAPTION 'Load a Document' PARENT oFileMenu ;
- ACTION {||_XSample_93(1,oMemo,@cDocument,@cMemo)} ;
- MESSAGE 'This will load a text file into the document Window' ;
- INTO oMsgBox
-
- DCTREEITEM CAPTION 'Save Document' PARENT oFileMenu ;
- ACTION {||_XSample_93(2,oMemo,@cDocument,@cMemo)} ;
- MESSAGE 'This will save the document in the Window to the text file' ;
- INTO oMsgBox
-
- DCTREEITEM CAPTION 'Print' PARENT oMenu OBJECT oPrintMenu ;
- MESSAGE 'These are Printing Options' INTO oMsgBox
-
- DCTREEITEM CAPTION 'Preview File' PARENT oPrintMenu ;
- ACTION {||_XSample_93(3,oMemo,@cDocument,@cMemo)} ;
- MESSAGE 'This will display a text file in a Preview Window' ;
- INTO oMsgBox
-
- DCTREEITEM CAPTION 'Print File' PARENT oPrintMenu ;
- ACTION {||_XSample_93(4,oMemo,@cDocument,@cMemo)} ;
- MESSAGE 'This will Print a text file' INTO oMsgBox
-
- DCTREEITEM CAPTION 'Edit' PARENT oMenu OBJECT oEditMenu ;
- MESSAGE 'These are Editing Options' INTO oMsgBox
-
- DCTREEITEM CAPTION 'Edit Document' PARENT oEditMenu ;
- ACTION {||_XSample_93(5,oMemo,@cDocument,@cMemo)} ;
- MESSAGE 'This will allow a loaded document to be edited' ;
- INTO oMsgBox
-
- DCTREEITEM CAPTION 'Check Spelling' PARENT oEditMenu ;
- ACTION {||_XSample_93(6,oMemo,@cDocument,@cMemo)} ;
- MESSAGE 'This will check spelling (only if you have sufficient funds)' ;
- INTO oMsgBox
-
- DCTREEITEM CAPTION 'Clean Slate' PARENT oEditMenu ;
- ACTION {||_XSample_93(7,oMemo,@cDocument,@cMemo)} ;
- MESSAGE 'This will clear the document editor window' ;
- INTO oMsgBox
-
- DCTREEITEM CAPTION 'Exit Program' PARENT oMenu ;
- ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
- MESSAGE 'This will exit the program' INTO oMsgBox
-
- @ 1,32 DCMULTILINE cMemo SIZE 60,12 OBJECT oMemo READONLY ;
- MESSAGE 'Edit your text in this Window' INTO oMsgBox
-
- @ 14,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 90,1.2 ;
- OBJECT oStatic2
-
- @ .1,2 DCSTATIC TYPE XBPSTATIC_TYPE_TEXT SIZE 87,1 PARENT oStatic2 ;
- OBJECT oMsgBox FONT '12.Courier New Bold'
-
- DCREAD GUI FIT ADDBUTTONS MODAL ;
- TITLE 'Tree View Menu Sample' ;
- EVAL {|o|SetAppWindow(o),SetAppFocus(oMenu)}
-
- DC_ChDir(cSaveDir)
-
- RETURN nil
-
- * ----------------------
-
- STATIC FUNCTION _XSample_93( nMode, oMemo, cDocument, cMemo )
-
- LOCAL oDirs, oFiles, cDirectory, lOk, GetList := {}, oFileName
-
- IF nMode = 1 // Open file
- @ 5,2 DCSAY 'Enter name of file to Edit'
- @ 6,2 DCGET cDocument GETSIZE 53 GETOBJECT oFileName
- @ 7.5,2 DCDIRTREE ;
- DIRS oDirs VAR cDirectory ;
- FILES oFiles VAR cDocument ;
- DATALINK {||oFileName:SetData(), DC_GetRefresh(GetList)} ;
- SIZE 50,6 ;
- EXT '*.*','*.TXT','*.DOC'
- DCREAD GUI FIT ADDBUTTONS TO lOk MODAL
- IF lOk
- cMemo := MemoRead(cDocument)
- oMemo:setData()
- ENDIF
- ELSEIF nMode = 2 // Save file
- cMemo := oMemo:GetData()
- MemoWrit(cDocument,cMemo)
- ELSEIF nMode = 3 // Preview file
- DC_PrintFile(cDocument,.t.)
- ELSEIF nMode = 4 // Print file
- DC_PrintFile(cDocument,.f.)
- ELSEIF nMode = 5 // edit
- oMemo:setEditable(.t.)
- SetAppFocus(oMemo)
- ELSEIF nMode = 6 // check spelling
- DC_Winalert('Please deposit $1,000,000 to start spell check')
- ELSEIF nMode = 7
- cMemo := ''
- oMemo:setData()
- ENDIF
- RETURN nil
- *** END OF EXAMPLE ***
-
- * --------------------
-
- STATIC FUNCTION _TreeKeyboard( mp1, mp2, oTreeRoot, aGetList )
-
- LOCAL oItem, bAction
-
- IF mp1 == xbeK_ENTER
- oItem := oTreeRoot:getData()
- bAction := DC_GetBlock(aGetList[oItem:cargo[1],bGETLIST_ACTION])
- IF Valtype(bAction) = 'B'
- Eval(bAction,oItem)
- ELSEIF oItem:isExpanded()
- oItem:expand(.f.)
- ELSE
- oItem:expand(.t.)
- ENDIF
- ENDIF
-
- RETURN nil
-
- * --------------------
-
- STATIC FUNCTION XSample_94( aGetList, aGetOptions )
-
- /*
- This Example shows how to create an array viewer. Array
- sub-trees do not get created until they are expanded.
- This saves load time and memory.
- */
-
- LOCAL aArray, oTannenBaum, GetList := {}, i, GetOptions, lWindows
-
-
- lWindows := .f.
-
- aArray := { 'This is a string', ;
- Date(), ;
- 123456.78, ;
- .t., ;
- SetAppWindow(), ;
- aGetList, ;
- aGetOptions, ;
- nil, ;
- Directory('*.DB*'), ;
- {||Msgbox('I am a Code Block')} }
-
- @ 1,1 DCTREEROOT OBJECT oTannenBaum SIZE 40,20 FONT '10.Courier' ;
- HASLINES HASBUTTONS
-
- @ 21,1 DCCHECKBOX lWindows PROMPT 'Break out Arrays/Objects into Separate Windows'
-
- FOR i := 1 TO Len(aArray)
- _XSample_94( 1, GetList, aArray[i], @oTannenBaum, @lWindows )
- NEXT
-
- DCGETOPTIONS NOBUSY
-
- DCREAD GUI FIT ;
- OPTIONS GetOptions ;
- TITLE 'Array/Object Browser' ;
- EVAL {|o|SetAppWindow(o), o:resize := {||_XSample_94(3,,,oTannenBaum)}}
-
- RETURN nil
-
- * --------------------
-
- STATIC FUNCTION _XSample_94( nMode, GetList, xData, oTree, lWindows, cCaption )
-
- LOCAL i, oThread, GetOptions
-
- IF nMode = 1
-
- IF Valtype(xData) = 'C'
- DCTREEITEM CAPTION xData PARENT oTree ;
- IMAGENORMAL ICON_CHARACTER ;
- IMAGEEXPANDED ICON_CHARACTER ;
- IMAGEMARKED ICON_CHARACTER
- ELSEIF Valtype(xData) = 'D'
- DCTREEITEM CAPTION DC_XtoC(xData) PARENT oTree ;
- IMAGENORMAL ICON_DATE ;
- IMAGEEXPANDED ICON_DATE ;
- IMAGEMARKED ICON_DATE
- ELSEIF Valtype(xData) = 'N'
- DCTREEITEM CAPTION DC_XtoC(xData) PARENT oTree ;
- IMAGENORMAL ICON_NUMERIC ;
- IMAGEEXPANDED ICON_NUMERIC ;
- IMAGEMARKED ICON_NUMERIC
- ELSEIF Valtype(xData) = 'L'
- DCTREEITEM CAPTION DC_XtoC(xData) PARENT oTree ;
- IMAGENORMAL ICON_LOGICAL ;
- IMAGEEXPANDED ICON_LOGICAL ;
- IMAGEMARKED ICON_LOGICAL
- ELSEIF Valtype(xData) = 'B'
- DCTREEITEM CAPTION DC_GetCodeBlockText(xData) PARENT oTree ;
- IMAGENORMAL ICON_CODEBLOCK ;
- IMAGEEXPANDED ICON_CODEBLOCK ;
- IMAGEMARKED ICON_CODEBLOCK
- ELSEIF Valtype(xData) = 'U'
- DCTREEITEM CAPTION 'Nil' PARENT oTree ;
- IMAGENORMAL ICON_NIL ;
- IMAGEEXPANDED ICON_NIL ;
- IMAGEMARKED ICON_NIL
- ELSEIF Valtype(xData) = 'O'
- cCaption := 'OBJECT:' + xData:ClassName()
- DCTREEITEM CAPTION cCaption ;
- PARENT oTree ;
- CARGO xData ;
- ACTION { |o| _XSample_94( 2, nil, o:cargo[3], o, @lWindows, cCaption ) } ;
- IMAGENORMAL ICON_CLOSED_OBJECT ;
- IMAGEEXPANDED ICON_OPEN_OBJECT ;
- IMAGEMARKED ICON_CLOSED_OBJECT
- ELSEIF Valtype(xData) = 'A'
- cCaption := 'Array (' + Alltrim(Str(Len(xData))) + ')'
- DCTREEITEM CAPTION cCaption ;
- PARENT oTree ;
- CARGO xData ;
- ACTION { |o| _XSample_94( 2, nil, o:cargo[3], o, @lWindows, cCaption ) } ;
- IMAGENORMAL ICON_CLOSED_ARRAY ;
- IMAGEEXPANDED ICON_OPEN_ARRAY ;
- IMAGEMARKED ICON_CLOSED_ARRAY
- ENDIF
-
- ELSEIF nMode = 2 .AND. Valtype(xData) $ 'AO'
-
- GetList := {}
- IF Valtype(xData) = 'O'
- IF IsMethod(xData,'CHILDLIST')
- xData := xData:ChildList()
- ELSE
- RETURN nil
- ENDIF
- ENDIF
-
- IF lWindows
- oTree := nil
- @ 1,1 DCTREEROOT OBJECT oTree SIZE 50,15 FONT '10.Courier' ;
- HASLINES HASBUTTONS
- ENDIF
-
- FOR i := 1 TO Len(xData)
- _XSample_94( 1, GetList, xData[i], @oTree, @lWindows )
- NEXT
-
- IF !lWindows
- oTree:cargo[3] := nil
- DCREAD GUI EXIT PARENT oTree
- oTree:expand(.t.)
- ELSE
-
- oThread := Thread():new()
- oThread:Start( {||_XSample_94(4,GetList,,@oTree,,cCaption)} )
- ENDIF
-
- ELSEIF nMode = 3
-
- oTree:setSize( { oTree:setParent():currentSize()[1]-30, ;
- oTree:setParent():currentSize()[2]-70 } )
-
- ELSEIF nMode = 4
-
- DCGETOPTIONS ;
- ORIGIN XBPDLG_ORIGIN_MOUSE ;
- NOBUSY ;
- HIDE
-
- DCREAD GUI FIT TITLE cCaption ;
- OPTIONS GetOptions ;
- EVAL {|o|o:resize := {||_XSample_94(5,,,@oTree)}, ;
- o:setPos({o:CurrentPos()[1],o:currentPos()[2]-o:currentSize()[2]} ), ;
- o:show() }
-
- ELSEIF nMode = 5
-
- oTree:setSize( { oTree:setParent():currentSize()[1]-30, ;
- oTree:setParent():currentSize()[2]-40 } )
- ENDIF
-
- RETURN nil
-
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_95()
-
- /*
- This example shows how to print concatenated strings of
- different fonts using DCPRINT SAY without coordinates.
- */
-
- LOCAL oPrinter, i
-
- DCPRINT ON TO oPrinter PREVIEW HIDE
-
- FOR i := 20 TO 50
-
- @ i,1+(i/5) DCPRINT SAY '8.Arial' PRINTER oPrinter FONT '8.Arial'
-
- DCPRINT SAY '10.Courier' PRINTER oPrinter FONT '10.Courier'
-
- DCPRINT SAY '12.Arial Bold' PRINTER oPrinter FONT '12.Arial Bold'
-
- DCPRINT SAY '10.Courier' PRINTER oPrinter FONT '10.Courier'
-
- DCPRINT SAY '8.Terminal Bold' PRINTER oPrinter FONT '8.Terminal Bold'
-
- DCPRINT SAY '6.Terminal' PRINTER oPrinter FONT '6.Terminal'
-
- NEXT
-
- DCPRINT OFF PRINTER oPrinter
-
- RETURN nil
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_96()
-
- /*
- This example shows how to use the DCSETPARENT command
- to eliminate the need to use the PARENT clause on all
- DC* commands.
- */
-
- LOCAL oTabPage1, oTabPage2, GetList := {}
-
- @ 1,1 DCTABPAGE oTabPage1 CAPTION 'Page 1' SIZE 50,10
-
- DCSETPARENT TO oTabPage1
-
- @ 2,2 DCSAY 'This goes on Tab Page ONE'
- @ 4,2 DCSAY 'This goes on Tab Page ONE too!'
- @ 6,2 DCSAY 'This goes on Tab Page ONE also!'
-
- DCSETPARENT TO
-
- @ 0,0 DCTABPAGE oTabPage2 CAPTION 'Page 2' RELATIVE oTabPage1
-
- DCSETPARENT TO oTabPage2
-
- @ 2,2 DCSAY 'This goes on Tab Page TWO'
- @ 4,2 DCSAY 'This goes on Tab Page TWO too!'
- @ 6,2 DCSAY 'This goes on Tab Page TWO also!'
-
- DCREAD GUI FIT ;
- MODAL ;
- ADDBUTTONS ;
- TITLE 'Example of DCSETPARENT command'
-
- RETURN nil
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_97()
-
- /*
- This example prints all FIXED fonts to help determine the proper
- fonts to use for columnar reports. Some printers give different
- results for different fixed fonts, especially HP printers.
- */
-
- LOCAL oFont, aFontList, i, iMax, nRow, nPointSize, cCompoundName, ;
- aFonts := {}, lExact := Set(_SET_EXACT,.t.), oCrt, oPrinter, ;
- oScrn
-
- DCPRINT ON TO oPrinter
- IF Valtype(oPrinter) # 'O' .OR. !oPrinter:lActive
- RETURN nil
- ENDIF
-
- oCrt := XbpCrt():new(AppDeskTop()):create()
- oCrt:hide()
- oFont := XbpFont():new(oCrt:PresSpace())
- aFontList := oFont:list()
- oCrt:destroy()
- iMax := Len( aFontList )
- nRow := 5
-
- oScrn := DC_WaitOn()
-
- FOR i := 1 TO iMax
-
- IF Ascan( aFonts, aFontList[i]:compoundname ) > 0
- LOOP
- ENDIF
- AAdd( aFonts, aFontList[i]:compoundname )
- IF aFontList[i]:fixed
- oFont := aFontList[i]
- FOR nPointSize := 6 TO 14
- cCompoundName := Alltrim(Str(nPointSize)) + '.' + oFont:compoundname
- @ nRow++, 10 DCPRINT SAY cCompoundName FONT cCompoundName
- NEXT
- ENDIF
- IF nRow > 50
- DCPRINT EJECT
- nRow := 5
- ENDIF
-
- NEXT
- Set(_SET_EXACT,lExact)
- oFont:destroy()
- DC_Impl(oScrn)
-
- DCPRINT OFF
-
- DC_MsgBox('Fixed Fonts were sent to Printer!')
-
- RETURN nil
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_98()
-
- /*
- This example shows how to use an eXPress++ dialog to create
- an email message for sending via Outlook. This example
- uses JazzAge 2.0 library and DLL for Active-X support.
-
- See XOUTLOOK.PRG for Active-X wrappers.
- */
-
- LOCAL GetList := {}, cEmailAddress, cAttachment, cText, cSubject
-
- cEmailAddress := Space(50)
- cSubject := Space(50)
- cAttachment := Space(50)
- cText := ''
-
- IF !IsFunction('SendMailToOutLook')
- DC_WinAlert('This sample is not available!')
- RETURN nil
- ENDIF
-
- @ 1,1 DCSAY ' Address' GET cEmailAddress GETSIZE 40 TABSTOP
- @ 3,1 DCSAY ' Subject' GET cSubject TABSTOP
- @ 5,1 DCSAY 'Attachment' GET cAttachment POPUP {|c|DC_PopFile(c)} TABSTOP
- @ 7,1 DCSAY 'Text of Message'
- @ 8,1 DCMULTILINE cText SIZE 75,10 TABSTOP
-
- @ 1,60 DCPUSHBUTTON CAPTION 'Send' SIZE 9,1.2 ;
- ACTION {||SendMailToOutLook(Trim(cSubject), Trim(cText), ;
- Alltrim(cAttachment), Alltrim(cEmailAddress) ), ;
- DC_MsgBox('Message has been Sent!')} ;
- WHEN {||!Empty(cEmailAddress) .AND. !Empty(cSubject) } TABSTOP
-
- DCREAD GUI FIT BUTTONS DCGUI_BUTTON_EXIT ;
- TITLE 'Send an E-Mail Message via OutLook' ;
- EVAL {|o|SetAppWindow(o)}
-
- RETURN nil
-
- * ----------------------
-
- STATIC FUNCTION _XSample_98( cFileName )
-
- LOCAL GetList := {}, oDirs, cDirectory, oFiles
-
- cDirectory := DC_Curpath()
-
- @ 1,1 DCDIRTREE ;
- DIRS oDirs VAR cDirectory ;
- FILES oFiles VAR cFileName ;
- DATALINK {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
- SIZE 50,12 ;
- EXT '*.*'
-
- DCREAD GUI FIT ADDBUTTONS MODAL
-
- RETURN cFileName
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_99()
-
- /*
- This example shows how to use DCQUICKBROWSE for browsing
- a database via the Data Access Chain.
- */
-
- LOCAL GetList := {}, oBrowse, aFields, aHeaders, aPres, nRecord
-
- IF Val(Version(1)+'.'+Version(2)) < 1.3
- DC_WinAlert('Quick Browse not available in Version 1.2')
- RETURN nil
- ENDIF
-
- IF !File('..\XDOC\EXPRESS.DBF')
- DC_MsgBox({'Sorry. The database required to show this feature',;
- 'is not included in the demonstration version', ;
- 'or the ..\XDOC\EXPRESS.DBF file does not exist'})
- RETURN nil
- ENDIF
-
- SET DEFA TO ..\XDOC
- USE EXPRESS VIA FOXCDX EXCLUSIVE ALIAS 'XDOC'
- SET INDEX TO EXPRESS.CDX
- OrdSetFocus('COMMAND')
- SET DEFA TO
- nRecord := RecNo()
-
- aFields := { 'XDOC->COMMAND', ;
- 'XDOC->SHORT', ;
- 'XDOC->TYPE', ;
- 'XDOC->MODULE', ;
- 'XDOC->SEE_ALSO'}
-
- aHeaders := { 'Command','Short Description','Type','Module','See Also'}
-
- @ 1,1 DCQUICKBROWSE ALIAS 'XDOC' SIZE 70,20 ;
- OBJECT oBrowse ;
- FIELDS aFields HEADERS aHeaders ;
- INTO nRecord ;
- STYLE XBP_STYLE_FANCY ;
- CURSORMODE XBPBRW_CURSOR_CELL ;
- COLOR GRA_CLR_BLUE, GRA_CLR_WHITE ;
- ITEMSELECTED {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}
-
- DCREAD GUI FIT ADDBUTTONS ;
- MODAL ;
- TITLE 'Quick-Browsing a Database'
-
- GO nRecord
-
- DCMSGBOX RecNo(), XDOC->Command, XDOC->Short TIMEOUT 2
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * --------------------
-
- STATIC FUNCTION XSample_100()
-
- /*
- This example shows how to use DCQUICKBROWSE for browsing
- an array via the Data Access Chain.
- */
-
- LOCAL GetList := {}, oBrowse, aDirectory := Directory(), aHeaders, ;
- aColumns, aColType, aColAlign, aColWidth
-
- IF Val(Version(1)+'.'+Version(2)) < 1.3
- DC_WinAlert('Quick Browse not available in Version 1.2')
- RETURN nil
- ENDIF
-
- aColumns := { ;
- F_NAME , ; // Display files as icons
- F_NAME , ; // Display file names as text
- F_SIZE , ;
- F_WRITE_DATE , ;
- F_WRITE_TIME , ;
- F_CREATION_DATE , ;
- F_CREATION_TIME }
-
- aHeaders := { ;
- " " , ;
- "File name " , ;
- " File size" , ;
- " Access date" , ;
- " Access time" , ;
- "Creation date" , ;
- "Creation time" }
-
- aColType := { ;
- { 1, XBPCOL_TYPE_FILEMINIICON }, ;
- nil, ;
- nil, ;
- nil, ;
- nil, ;
- nil, ;
- nil }
-
- aColWidth := { ;
- 20, ;
- 175, ;
- 150, ;
- 150, ;
- 150, ;
- 150, ;
- 150 }
-
- aColAlign := { ;
- XBPALIGN_VCENTER + XBPALIGN_HCENTER, ;
- XBPALIGN_RIGHT + XBPALIGN_VCENTER, ;
- XBPALIGN_RIGHT + XBPALIGN_VCENTER, ;
- XBPALIGN_RIGHT + XBPALIGN_VCENTER, ;
- XBPALIGN_RIGHT + XBPALIGN_VCENTER, ;
- XBPALIGN_RIGHT + XBPALIGN_VCENTER, ;
- XBPALIGN_RIGHT + XBPALIGN_VCENTER }
-
- @ 1,1 DCQUICKBROWSE DATA aDirectory SIZE 90,20 ;
- OBJECT oBrowse ;
- COLUMNS aColumns ;
- FONT '10.Courier New' ;
- HEADERS aHeaders ;
- COLTYPE aColType ;
- COLWIDTH aColWidth ;
- COLALIGN aColAlign ;
- EVAL {|o|o:setRowHeight(25)}
-
- DCREAD GUI FIT ADDBUTTONS ;
- MODAL ;
- TITLE 'Quick-Browsing an Array'
-
- RETURN nil
- *** END OF EXAMPLE ***
-
- * --------------------
-
- STATIC FUNCTION XSample_101()
-
- /*
- This example shows how to use the GRASTRING clause of
- @..DCSAY..GET to create GraString() Says insteead of
- XbpStatic() Says. Saves Memory resources.
- */
-
- LOCAL GetList := {}, aGets[5], oStatic, GetOptions
-
- AFill(aGets,Space(10))
-
- @ 1,1 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX SIZE 35,13 OBJECT oStatic
-
- @ 2,3 DCSAY 'This is Get1' GET aGets[1] PARENT oStatic TABSTOP
- @ 4,3 DCSAY 'This is Get2' GET aGets[2] PARENT oStatic TABSTOP GRASTRING
- @ 6,3 DCSAY 'This is Get3' GET aGets[3] PARENT oStatic TABSTOP GRASTRING
- @ 8,3 DCSAY 'This is Get4' GET aGets[4] PARENT oStatic TABSTOP
- @10,3 DCSAY 'This is Get5' GET aGets[5] PARENT oStatic TABSTOP GRASTRING
-
- DCGETOPTIONS SAYRIGHTCENTER
-
- DCREAD GUI FIT ADDBUTTONS ;
- OPTIONS GetOptions ;
- MODAL ;
- TITLE '@..SAY..GET w/GRASTRING'
-
- RETURN nil
- *** END OF EXAMPLE ***
-
-
- * --------------------
-
- STATIC FUNCTION XSample_102()
-
- /*
- This example shows how to create Colored GETs. It uses DC_GetCargo()
- to store away previous GET color.
- */
-
- LOCAL GetList := {}, aGets[15], aPres, i, aSelected
-
- aSelected := { { XBP_PP_FGCLR, GRA_CLR_BLACK } , { XBP_PP_BGCLR, GRA_CLR_WHITE } }
-
-
- FOR i := 1 TO 15
-
- aPres := { { XBP_PP_FGCLR, GRA_CLR_WHITE } , ;
- { XBP_PP_BGCLR, i } }
-
- aGets[i] := Pad('This is a colored GET',25)
-
- @ i, 1 DCSAY Alltrim(Str(aPres[1,2])) + ' / ' + Alltrim(Str(aPres[2,2])) ;
- GET aGets[i] GETPRES aPres ;
- GOTFOCUS {|a,b,o|DC_GetCargo(o,o:setPresParam(aSelected))} ;
- LOSTFOCUS {|a,b,o|o:setPresParam(DC_GetCargo(o))} ;
- TABSTOP SAYSIZE 5
-
- NEXT
-
- DCREAD GUI ;
- FIT ;
- ADDBUTTONS ;
- MODAL ;
- TITLE 'Colored Gets'
-
- RETURN nil
- *** END OF EXAMPLE ***
-
-
-
-
-