home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2002 June
/
PCWorld_2002-06_cd.bin
/
Software
/
Komercni
/
xbase
/
express
/
exd17208.r04
/
exp17
/
Samples
/
Xdemo3.prg
< prev
next >
Wrap
Text File
|
2002-01-30
|
23KB
|
788 lines
/*
╓─────────────────────────────────────────────────────────────────╖
║ 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