home *** CD-ROM | disk | FTP | other *** search
- /*
- ╓─────────────────────────────────────────────────────────────────╖
- ║ Program..: XDEMO3.PRG ║
- ║ Author...: Roger J. Donnay ║
- ║ Notice...: (c) DONNAY Software Designs 1987-2001 ║
- ║ Date.....: Sep 15, 2001 ║
- ║ Notes....: eXPress Demo Program #3 ║
- ╙─────────────────────────────────────────────────────────────────╜
-
- This sample program demonstrates miscellaneous features of
- eXPress++ like Tab Pages, Bitmaps, Spin Buttons, ScrollBars,
- Directory listings and Custom objects.
-
- */
-
- #include "dcdir.ch"
- #include "dcgra.ch"
- #include "dcpick.ch"
- #include "dcbitmap.ch"
- #include "dcdialog.ch"
- #include "appevent.ch"
- #include "dccursor.ch"
- #include "gra.ch"
-
- #define oTabPage1 aLocals[1]
- #define oTabPage2 aLocals[2]
- #define oTabPage3 aLocals[3]
- #define oTabPage4 aLocals[4]
- #define oTabPage5 aLocals[5]
- #define oTabPage6 aLocals[6]
- #define oTabPage7 aLocals[7]
- #define oTabPage8 aLocals[8]
- #define cBitMap1 aLocals[9]
- #define oBitMap1 aLocals[10]
- #define oToolBar aLocals[11]
- #define aDirectory aLocals[12]
- #define oDirectory aLocals[13]
- #define oDirGroup aLocals[14]
- #define oIconGroup aLocals[15]
- #define nRed aLocals[16]
- #define nGreen aLocals[17]
- #define nBlue aLocals[18]
- #define oColorBox aLocals[19]
- #define oPS aLocals[20]
- #define oMsgBox aLocals[21]
- #define oRedBar aLocals[22]
- #define oGreenBar aLocals[23]
- #define oBlueBar aLocals[24]
- #define oRedSpin aLocals[25]
- #define oGreenSpin aLocals[26]
- #define oBlueSpin aLocals[27]
- #define oPhoto1 aLocals[28]
- #define oPhoto2 aLocals[29]
- #define oDesc1 aLocals[30]
- #define oDesc2 aLocals[31]
- #define oDesc3 aLocals[32]
- #define bCustom aLocals[33]
- #define oBanner aLocals[34]
- #define aGetlist aLocals[35]
- #define aGetOptions aLocals[36]
- #define bCrt1 aLocals[37]
- #define bCrt2 aLocals[38]
- #define bCrt3 aLocals[39]
- #define oCrtWindow aLocals[40]
- #define cCrtGet1 aLocals[41]
- #define lTestMode aLocals[42]
- #define lLogicTest aLocals[43]
- #define oClipPhoto aLocals[44]
- #define lDotActive aLocals[45]
- #define bTimerEvent aLocals[46]
- #define nSeconds2 aLocals[47]
- #define oButton1 aLocals[48]
- #define oButton2 aLocals[49]
- #define lPlayBack aLocals[50]
- #define lStartUp aLocals[51]
- #define oDirs aLocals[52]
- #define oFiles aLocals[53]
- #define cFileName1 aLocals[54]
- #define oFileName1 aLocals[55]
- #define cFileName2 aLocals[56]
- #define oFileName2 aLocals[57]
- #define cDirectory aLocals[58]
- #define aFile aLocals[59]
- #define cSource aLocals[60]
- #define bSortCol aLocals[61]
- #define aListField aLocals[62]
- #define aPickField aLocals[63]
- #define cAlias aLocals[64]
- #define oBrowse aLocals[65]
- #define lDialogActive aLocals[66]
- #define oProgress aLocals[67]
- #define oThread aLocals[68]
- #define cSaveDir aLocals[69]
- #define oDir aLocals[70]
- #define oDlg aLocals[71]
- #define oDlgWindow aLocals[72]
- #define cTitle aLocals[73]
- #define lMDIApp aLocals[74]
- #define oTabPageArea3 aLocals[75]
- #define oTabPageArea4 aLocals[76]
-
- FUNCTION XDemo_3 ( oDialog )
-
- LOCAL aLocals[76], GetOptions, GetList, i
-
- SET PATH TO ..\DATA
-
- DC_Gui(.t.)
-
- _BuildGets( @GetList, @GetOptions, aLocals, oDialog )
-
- lStartUp := .t.
- lDotActive := .f.
-
- cSaveDir := DC_CurPath()
-
- DCREAD GUI ;
- TITLE cTitle ;
- OPTIONS GetOptions ;
- HANDLER DlgHandler REFERENCE aLocals ;
- APPWINDOW oDialog ;
- FIT
-
- SetTimerEvent(0)
- lDialogActive := .f.
- Sleep(30)
- DC_ChDir(cSaveDir)
-
- CLOSE DATABASES
-
- RETURN nil
-
- * -------------------------
-
- STATIC FUNCTION ;
- DlgHandler ( nEvent, mp1, mp2, oXbp, oDialog, GetList, aLocals )
-
- IF lStartUp
- lDialogActive := .t.
- oThread := Thread():new()
- oThread:Start({||_TestProgress(aLocals)})
- RGB(aLocals)
- lStartUp := .f.
- ENDIF
-
- RETURN DCGUI_NONE
-
- * --------------------
-
- STATIC FUNCTION _BuildGets( GetList, GetOptions, aLocals, oDialog )
-
- LOCAL i, aCoords
-
- GetList := {}
- cTitle := 'eXPress++ Demo Program #3' ;
-
- /* ---- Tab Page #1 ---- */
-
- @ 2,1 DCTABPAGE oTabPage1 CAPTION 'Colors' ;
- SIZE 84,16 PREOFFSET 0 POSTOFFSET 90 ;
- MESSAGE 'Demonstration of Colors and ScrollBars'
-
- nRed := 50 ; nGreen := 100 ; nBlue := 150
-
- @ 2.5, 20 DCSPINBUTTON nRed PARENT oTabPage1 SIZE 7 LIMITS 0,255 ;
- OBJECT oRedSpin ;
- CALLBACK {|a,b,o|o:GetData(),oRedBar:SetData(),RGB(aLocals)}
-
- @ 0, -10 DCSAY 'Red' SAYSIZE 5 PARENT oTabPage1 RELATIVE oRedSpin
-
- @ 0, 10 DCSCROLLBAR DATA nRed SIZE 40,1 PARENT oTabPage1 ;
- RELATIVE oRedSpin ;
- TYPE XBPSCROLL_HORIZONTAL RANGE 0,255 OBJECT oRedBar ;
- SCROLL { |a,x,o| nRed := a[1], ;
- oRedSpin:SetData(), ;
- o:SetData(), RGB(aLocals) }
-
- @ 2, 0 DCSPINBUTTON nGreen PARENT oTabPage1 SIZE 7 LIMITS 0,255 ;
- OBJECT oGreenSpin RELATIVE oRedSpin ;
- CALLBACK {|a,b,o|o:GetData(),oGreenBar:SetData(),RGB(aLocals)}
-
-
- @ 0, -10 DCSAY 'Green' SAYSIZE 5 PARENT oTabPage1 RELATIVE oGreenSpin
-
- @ 0, 10 DCSCROLLBAR DATA nGreen SIZE 40,1 PARENT oTabPage1 ;
- TYPE XBPSCROLL_HORIZONTAL RANGE 0,255 OBJECT oGreenBar ;
- RELATIVE oGreenSpin ;
- SCROLL { |a,x,o| nGreen := a[1], ;
- oGreenSpin:SetData(), ;
- o:SetData(), RGB(aLocals) }
-
- @ 2, 0 DCSPINBUTTON nBlue PARENT oTabPage1 SIZE 7 LIMITS 0,255 ;
- OBJECT oBlueSpin RELATIVE oGreenSpin ;
- CALLBACK {|a,b,o|o:GetData(),oBlueBar:SetData(),RGB(aLocals)}
-
- @ 0, -10 DCSAY 'Blue' SAYSIZE 5 PARENT oTabPage1 RELATIVE oBlueSpin
-
- @ 0, 10 DCSCROLLBAR DATA nBlue SIZE 40,1 PARENT oTabPage1 ;
- RELATIVE oBlueSpin ;
- TYPE XBPSCROLL_HORIZONTAL RANGE 0,255 OBJECT oBlueBar ;
- SCROLL { |a,x,o| nBlue := a[1], ;
- oBlueSpin:SetData(), ;
- o:SetData(), RGB(aLocals) }
-
- @ 3, 0 DCSTATIC XBPSTATIC_TYPE_RAISEDBOX SIZE 45,4 ;
- OBJECT oColorBox PARENT oTabPage1 RELATIVE oBlueSpin ;
- EVAL { |o| o:paint := {||RGB(aLocals)} }
-
-
- /* ---- Tab Page #2 ---- */
-
- @ 0,0 DCTABPAGE oTabPage2 CAPTION 'Directory' ;
- RELATIVE oTabPage1 ;
- MESSAGE 'Demonstration of Directory Listings'
-
- cFileName1 := Space(30)
-
- @ 2,2 DCGET cFileName1 GETSIZE 43 PARENT oTabPage2 GETOBJECT oFileName1
-
- @ 3.5,2 DCSTATIC XBPSTATIC_TYPE_RECESSEDBOX SIZE 41.5,12 ;
- OBJECT oDirGroup PARENT oTabPage2
-
- aDirectory := Directory()
- FOR i := 1 TO Len(aDirectory)
- ASize(aDirectory[i],5)
- aDirectory[i,5] := .f.
- NEXT
- aFile := aDirectory[1]
-
- @ .2,.2 DCBROWSE oDirectory PARENT oDirGroup DATA aDirectory ;
- SIZE 41,11.8 ;
- FONT '10.Helv Bold' ;
- INTO aFile ;
- DATALINK {||cFileName1:=aFile[1],oFileName1:SetData()} ;
- MARK 5 ;
- MKCOLOR nil, GRA_CLR_WHITE, GRA_CLR_BLUE
-
- bSortCol := {|a,n,o| _Sort(aDirectory,n) }
-
- DCBROWSECOL ELEMENT 1 WIDTH 8*10 HEADER "Name" PARENT oDirectory SORT bSortCol pixel
-
- DCBROWSECOL ELEMENT 2 WIDTH 5 HEADER "Size" PARENT oDirectory SORT bSortCol WHEN {||.f.}
-
- DCBROWSECOL ELEMENT 3 WIDTH 5 HEADER "Date" PARENT oDirectory SORT bSortCol
-
- DCBROWSECOL ELEMENT 4 WIDTH 5 HEADER "Time" PARENT oDirectory SORT bSortCol
-
- cFileName1 := Space(30)
- cFileName2 := Space(30)
- cDirectory := ''
-
- @ 2,45 DCGET cFileName2 GETSIZE 43 PARENT oTabPage2 GETOBJECT oFileName2
-
- IF Upper(AppName()) == 'XANON.EXE'
-
- @ 4.5, 45 DCSAY 'Directory Tree disabled in On-Line Demo' ;
- PARENT oTabPage2 SAYSIZE 30
-
- ELSE
- @ 3.5,45 DCDIRTREE ;
- DIRS oDirs VAR cDirectory ;
- FILES oFiles VAR cFileName2 DATALINK {||oFileName2:SetData()} ;
- PARENT oTabPage2 ;
- SIZE 37,12 ;
- EXT '*.BAT','*.*','*.BAK','*.BMP','*.TXT'
- ENDIF
-
-
- /* ---- Tab Page #3 ---- */
-
- @ 0,0 DCTABPAGE oTabPage3 CAPTION 'Banner' ;
- RELATIVE oTabPage2 ;
- STATICAREA oTabPageArea3 ;
- MESSAGE 'Demonstration of Custom Banner and Icons'
-
- @ 2,5 DCSTATIC XBPSTATIC_TYPE_RAISEDBOX SIZE 15,7 ;
- OBJECT oIconGroup PARENT oTabPageArea3
-
- @ 2,2 DCSTATIC XBPSTATIC_TYPE_SYSICON PARENT oIconGroup ;
- CAPTION XBPSTATIC_SYSICON_ICONINFORMATION
-
- @ 5,2 DCSTATIC XBPSTATIC_TYPE_SYSICON PARENT oIconGroup ;
- CAPTION XBPSTATIC_SYSICON_ICONQUESTION
-
- @ 2,7 DCSTATIC XBPSTATIC_TYPE_SYSICON PARENT oIconGroup ;
- CAPTION XBPSTATIC_SYSICON_ICONERROR
-
- @ 5,7 DCSTATIC XBPSTATIC_TYPE_SYSICON PARENT oIconGroup ;
- CAPTION XBPSTATIC_SYSICON_ICONWARNING
-
- @ 10,5 DCSAY 'This Banner is here to demonstrate custom ' + ;
- 'objects. Move the mouse across the banner.' ;
- PARENT oTabPageArea3 SAYSIZE 70
-
- bCustom := {|a|DemoBanner(a,aLocals)}
- @ 11,5 DCCUSTOM bCustom PARENT oTabPageArea3 OBJECT oBanner ;
- CAPTION 'This Banner is here to demonstrate custom ' + ;
- 'objects. Move the mouse across the banner.' ;
- SIZE 70,2 TYPE 1 FONT "20.Arial Bold" ;
- PRESENTATION { { XBP_PP_FGCLR, GRA_CLR_DARKRED }, ;
- { XBP_PP_BGCLR, GRA_CLR_WHITE } }
-
-
- @ 3,25 DCGRASTRING {'This is a Progress-Bar object that is being updated', ;
- 'from a procedure running in another thread' } ;
- PARENT oTabPageArea3 FONT '10.Arial Bold' COLOR GRA_CLR_RED
-
-
- @ 5.5,25 DCPROGRESS oProgress PARENT oTabPageArea3 ;
- SIZE 50,1.5 ;
- PERCENT ;
- MAXCOUNT 100 COLOR GRA_CLR_BLUE
-
- /* ---- Tab Page #4 ---- */
-
- @ 0,0 DCTABPAGE oTabPage4 CAPTION 'Graphics' ;
- RELATIVE oTabPage3 ;
- STATICAREA oTabPageArea4 ;
- MESSAGE 'This Tab Page displays graphics stuff using DCGRA* commands'
-
- @ .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 oTabPageArea4
-
- @ 5,4 TO 10,76 DCGRABOX FILL GRA_OUTLINEFILL COLOR GRA_CLR_YELLOW ;
- PARENT oTabPageArea4
-
- @ 6.2,15 DCGRAPROC {|o,c,r|_BitMaps(o,c,r)} PARENT oTabPageArea4
-
- FOR i := 1 TO 15
- @ 10.5, i*4 TO 13.5, i*4 DCGRALINE COLOR i PARENT oTabPageArea4
- @ 10.3 + (.22*i),4 TO 10.3 + (.22*i),56 DCGRALINE COLOR i PARENT oTabPageArea4
- NEXT
-
- /* ---- Tab Page #5 ---- */
-
- @ 0,0 DCTABPAGE oTabPage5 CAPTION 'ClipBoard' ;
- RELATIVE oTabPage4 ;
- MESSAGE 'This Tab Page demonstrates the ClipBoard Monitor'
-
- @ 1.5,10 DCSAY 'Images captured to the Clipboard by any Windows program' ;
- PARENT oTabPage5 SAYSIZE 50
-
- @ 2.2,10 DCSAY 'will be displayed below and saved in IMAGES.DBF.' ;
- PARENT oTabPage5 SAYSIZE 50
-
- @ 4,10 DCSTATIC XBPSTATIC_TYPE_RAISEDBOX SIZE 50,10 ;
- OBJECT oClipPhoto PARENT oTabPage5
-
- bTimerEvent := {|| MonitorClipBoard( aLocals )}
-
- cBitMap1 := BITMAP_EXPRESS
- DCBITMAP cBitMap1 PARENT oClipPhoto AUTOSCALE ;
- OBJECT oBitMap1 EVAL {||SetTimerEvent( 100, bTimerEvent) }
-
- lPlayBack := .f.
-
- @ 4,65 DCPUSHBUTTON OBJECT oButton1 CAPTION 'PlayBack' SIZE 9,2 ;
- PARENT oTabPage5 ;
- TOOLTIP 'Play Back all BitMaps in IMAGES.DBF' ;
- ACTION {||lPlayBack := .t., DisplayImages(aLocals) }
-
- @ 7,65 DCPUSHBUTTON OBJECT oButton1 CAPTION 'Stop' SIZE 9,2 ;
- PARENT oTabPage5 ;
- TOOLTIP 'Stop the Play Back' ;
- ACTION {||lPlayBack := .f.}
-
- /* ---- Tab Page #6 ---- */
-
- @ 0,0 DCTABPAGE oTabPage6 CAPTION 'Pointer' ;
- RELATIVE oTabPage5 ;
- MESSAGE 'This Tab Page demonstrates Pointer (Cursor) Types'
-
- @ 2,2 DCSAY 'Cursor type POINTER_ARROW_1' CURSOR POINTER_ARROW_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @ 4,2 DCSAY 'Cursor type POINTER_BEAM_1' CURSOR POINTER_BEAM_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @ 6,2 DCSAY 'Cursor type POINTER_MOVE_1' CURSOR POINTER_MOVE_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @ 8,2 DCSAY 'Cursor type POINTER_NO_1' CURSOR POINTER_NO_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @10,2 DCSAY 'Cursor type POINTER_PEN_1' CURSOR POINTER_PEN_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @12,2 DCSAY 'Cursor type POINTER_SIZE1_1' CURSOR POINTER_SIZE1_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @ 2,40 DCSAY 'Cursor type POINTER_SIZE2_1' CURSOR POINTER_SIZE2_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @ 4,40 DCSAY 'Cursor type POINTER_SIZE3_1' CURSOR POINTER_SIZE3_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @ 6,40 DCSAY 'Cursor type POINTER_SIZE4_1' CURSOR POINTER_SIZE4_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @ 8,40 DCSAY 'Cursor type POINTER_CROSS_1' CURSOR POINTER_CROSS_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @10,40 DCSAY 'Cursor type POINTER_BUSY_1' ;
- CURSOR { nil, POINTER_BUSY_1, nil } ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- @12,40 DCSAY 'Cursor type POINTER_WAIT_1' CURSOR POINTER_WAIT_1 ;
- PARENT oTabPage6 SAYSIZE 35 FONT '10.Helv' ;
- COLOR GRA_CLR_DARKBLUE, GRA_CLR_WHITE
-
- /* ---- Tab Page #7 ---- */
-
- @ 0,0 DCTABPAGE oTabPage7 CAPTION 'PickList' ;
- RELATIVE oTabPage6 ;
- MESSAGE 'This Tab Page Displays a Field Pick-List Example with a Browse'
-
- IF Select('COLLECT') = 0
- USE COLLECT VIA DBFNTX NEW SHARED
- ELSE
- dbSelectArea('COLLECT')
- ENDIF
-
- cAlias := 'COLLECT'
- aListField := Array(FCount())
- AFields(aListField)
-
- @ 2,3 DCPICKLIST aPickField LIST aListField ;
- CAPTION "Available Fields", "Selected Fields" ;
- FONT '8.Courier' ;
- SIZE 35,12 ;
- PARENT oTabPage7 ;
- DATALINK {||BrowseCollect(aLocals)}
-
- /* ---- Tab Page #8 ---- */
-
- @ 0,0 DCTABPAGE oTabPage8 CAPTION 'Source' ;
- RELATIVE oTabPage7 ;
- MESSAGE 'This Tab Page Displays the Source Code for this Dialog'
-
- cSource := MemoRead('XDEMO3.PRG')
- IF Empty(cSource)
- cSource := MemoRead('..\PRG\XDEMO3.PRG')
- ENDIF
- IF Empty(cSource)
- cSource := 'XDEMO3.PRG cannot be found'
- ENDIF
- @ 1.4,1 DCMULTILINE cSource PARENT oTabPage8 SIZE 81,14 ;
- FONT "8.Alaska Crt" EDITPROTECT {||.t.}
-
-
- /* ---- Tool Bar ---- */
-
- @ .1,.2 DCTOOLBAR oToolBar SIZE 9,1 BUTTONSIZE 9,1
-
- DCADDBUTTON CAPTION 'Exit' PARENT oToolBar ;
- ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)}
-
- /* ---- Message Box ---- */
-
- @ 18,1 DCMESSAGEBOX OBJECT oMsgBox FONT "8.Courier New" ;
- SIZE 70 COLOR GRA_CLR_GREEN, GRA_CLR_WHITE
-
- DCGETOPTIONS ;
- NOBUSY ;
- CASCADE ;
- SAYWIDTH 100 ;
- HELPFILE '..\DOC\EXPRESS.HLP'
-
- RETURN nil
-
- /* ------------------- */
-
- STATIC PROCEDURE _Sort ( aArray, nColumn )
-
- ASort( aArray,,,{|x,y|x[nColumn] < y[nColumn]} )
-
- RETURN
-
- /* ------------------- */
-
- STATIC PROCEDURE MonitorClipBoard( aLocals )
-
- LOCAL oBitMap, aFormats, oClipBoard
-
- // Open clipboard and determine the data formats contained in it
- oClipBoard := XbpClipBoard():new():Create()
- oClipBoard:open()
- aFormats := oClipBoard:queryFormats()
- IF AScan( aFormats, XBPCLPBRD_BITMAP ) > 0
- oBitMap := oClipBoard:getBuffer( XBPCLPBRD_BITMAP )
- oClipBoard:clear()
- IF !File('IMAGES.DBF')
- dBCreate( 'IMAGES', ;
- { { 'BITMAP','V',4,0 }, ;
- { 'DESC','C',30,0 } }, 'FOXCDX' )
- ENDIF
- USE images NEW VIA foxcdx
- AddRec()
- REPL IMAGES->bitmap WITH oBitMap:setBuffer(), ;
- IMAGES->desc WITH 'Image Number ' + Alltrim(Str(RecNo()))
-
- oBitMap:SetBuffer(oBitMap:SetBuffer())
- DC_BitMapDraw( oClipPhoto, oBitMap )
- CLOSE
- ENDIF
- oClipBoard:close()
- oClipBoard:Destroy()
- RETURN
-
- /* ------------------- */
-
- STATIC PROCEDURE DisplayImages( aLocals )
-
- LOCAL nSeconds, lClearBox := .t., nSaveArea := Select(), cBmpDb, cAlaskaDrive
-
- SetAppFocus(oTabPage5)
- SetAppFocus(oClipPhoto)
- IF !File('IMAGES.DBF')
- dBCreate( 'IMAGES', ;
- { { 'BITMAP','V',4,0 }, ;
- { 'DESC','C',30,0 } }, 'FOXCDX' )
- ENDIF
- USE images NEW VIA foxcdx
- DO WHILE lPlayBack .AND. !Eof()
- SetAppFocus()
- oBitMap1:SetBuffer(IMAGES->bitmap)
- DC_BitMapDraw( oClipPhoto, oBitMap1 )
- Sleep(10)
- SKIP
- ENDDO
- CLOSE
-
- IF !lPlayBack
- SELE (nSaveArea)
- RETURN
- ENDIF
-
- cBmpDb := 'C:\ALASKA\XPPW32\SOURCE\SAMPLES\DATA\BMPDB.DBF'
- IF !File(cBmpDb)
- cAlaskaDrive := SubStr(GetEnv('XPPRESOURCE'),1,2)
- cBmpDb := Strtran(cBmpDb,'C:',cAlaskaDrive)
- ENDIF
- IF File(cBmpDb)
- USE (cBmpDb) NEW VIA foxcdx
- DO WHILE lPlayBack .AND. SetAppFocus():ClassName()='XbpStatic'
- DC_AppEvent( @lPlayBack, 0, .01 )
- oBitMap1:setBuffer(FIELD->BITMAP,XBPBMP_FORMAT_WIN3X)
- DC_BitMapDraw( oClipPhoto, oBitMap1, lClearBox )
- lClearBox := .f.
- IF Eof()
- DbGoTop()
- ELSE
- DbSkip(1)
- ENDIF
- Sleep(.4)
- ENDDO
- CLOSE
- ENDIF
-
- SELE (nSaveArea)
-
- RETURN
-
- /* ---- Custom Class ----------------- */
-
- CLASS XbpBanner FROM XbpStatic
-
- EXPORTED:
-
- VAR ScrollMouseCol // Last Scroll Mouse Column
- VAR ScrollType // Scroll Type
- VAR ScrollPos // Scroll Position
- VAR ScrollCaption // Scroll Caption
- VAR ScrollNum // Scroll number
-
- METHOD Init, Create
- METHOD Scroll
-
- ENDCLASS
-
- /* ------------------- */
-
- METHOD XbpBanner:Create( oParent, oOwner, aPos, aSize, aPP, lVisible )
-
- ::XbpStatic:Create( oParent, oOwner, aPos, aSize, aPP, lVisible )
-
- RETURN self
-
- /* --------------------- */
-
- METHOD XbpBanner:Init( oParent, oOwner, aPos, aSize, aPP, lVisible )
-
- DEFAULT aPP := {}
-
- * initialize base class
- ::XbpStatic:init( oParent, oOwner, aPos, aSize, aPP, lVisible )
-
- ::scrollPos := 1
- ::scrollType := 1
- ::scrollCaption := ''
- ::scrollMouseCol := 0
- ::scrollNum := 3
- ::motion := { | aPos | ::Scroll( aPos[1] ) }
-
- RETURN self
-
- /* --------------------- */
-
- METHOD XbpBanner:Scroll( nMouseCol )
-
- ::SetCaption( Substr(::scrollCaption,::scrollPos) )
- IF nMouseCol > ::scrollMouseCol .AND. ::scrollPos < Len(::scrollCaption)-15
- ::scrollPos += ::scrollNum
- ELSEIF nMouseCol < ::scrollMouseCol .AND. ::scrollPos > 1
- ::scrollPos -= ::scrollNum
- ENDIF
- ::scrollMouseCol := nMouseCol
- RETURN self
-
- /* --------------------- */
-
- STATIC FUNCTION DemoBanner ( aParams, aLocals )
-
- LOCAL oXbp, GetList, nGetPointer, oParent, aPos, aSize, aPres, lVisible
-
- GetList := aParams[1]
- nGetPointer := aParams[2]
- oParent := aParams[3]
- aPos := aParams[4]
- aSize := aParams[5]
- aPres := aParams[6]
- lVisible := aParams[7]
-
- oXbp := XbpBanner():new( oParent, , aPos, aSize, aPres, lVisible, ;
- GetList, nGetPointer )
-
- oXbp:scrollType := Getlist[nGetPointer,nGETLIST_SUBTYPE]
- oXbp:scrollCaption := GetList[nGetPointer,cGETLIST_CAPTION]
- oXbp:scrollNum := 10
- IF !Empty(Getlist[nGetPointer,cGETLIST_FONT])
- oXbp:SetFontCompoundName( Getlist[nGetPointer,cGETLIST_FONT] )
- ENDIF
- oXbp:clipSiblings := .T.
- oXbp:caption := oXbp:scrollCaption
- oXbp:create()
- RETURN oXbp
-
- /* --------------------- */
-
- STATIC PROCEDURE RGB( aLocals )
-
- LOCAL aAttr := Array(GRA_AA_COUNT) // area attributes
- LOCAL nMax, aOldAttr, aOldRGB
-
- oPS := oColorBox:LockPS()
- nMax := 255 // oPS:maxColorIndex() // max colors
-
- // Set new RGB color and draw box
- aAttr[ GRA_AA_COLOR ] := nMax
- aOldAttr := oPS:setAttrArea( aAttr )
- aOldRGB := oPS:setColorIndex( nMax, {nRed,nGreen,nBlue} )
- GraBox( oPS, {0,0}, {400,400}, GRA_FILL )
- oPS:setAttrArea( aOldAttr )
- oPS:setColorIndex( nMax, aOldRGB )
- oColorBox:unlockPS( oPS )
-
- RETURN
-
- /* -------------------- */
-
- STATIC FUNCTION AddRec ( nWaitTime )
-
- LOCAL nWait
-
- APPEND BLANK
- IF !NETERR()
- RETURN (.T.)
- ENDIF
- DO WHILE .T.
- nWait := nWaitTime
- DO WHILE (nWaitTime = 0 .OR. nWait > 0)
- APPEND BLANK
- IF .NOT. NETERR()
- RETURN .T.
- ENDIF
- nWait := nWait - .5
- ENDDO
- ENDDO
- RETURN .F.
-
- /* --------------------- */
-
- STATIC FUNCTION BrowseCollect ( aLocals )
-
- LOCAL GetList := {}, i, aChildList
-
- IF Valtype(oBrowse) = 'O'
- aChildList := oBrowse:ChildList()
- FOR i := 1 TO Len(aChildList)
- aChildList[i]:Destroy()
- NEXT
- oBrowse:Destroy()
- ENDIF
-
- oBrowse := nil
-
- IF Empty(aPickField)
- RETURN nil
- ENDIF
-
- @ 2,40 DCBROWSE oBrowse DATA cAlias SIZE 43,12 PARENT oTabPage7 ;
- PRESENTATION DC_BrowPres()
-
- SELECT collect
- FOR i := 1 TO Len(aPickField)
- DCBROWSECOL DATA &('{||COLLECT->'+aPickField[i]+'}') ;
- HEADER aPickField[i] PARENT oBrowse
- NEXT
-
- DCREAD GUI PARENT oTabPage7 EXIT
- oBrowse:Hide()
- oBrowse:Show()
-
- SetAppFocus( oTabPage7 )
-
- RETURN nil
-
- /* --------------------- */
-
- STATIC FUNCTION _TestProgress ( aLocals )
-
- LOCAL nCount := 0
-
- DO WHILE lDialogActive
- Sleep(100)
- IF oProgress:status()=XBP_STAT_CREATE
- DC_GetProgress( oProgress, nCount )
- ENDIF
- nCount++
- IF nCount = 100
- nCount := 0
- ENDIF
- ENDDO
-
- RETURN nil
-
- /* -------------------- */
-
- STATIC FUNCTION _Bitmaps( 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
-
-
-