home *** CD-ROM | disk | FTP | other *** search
- /*
- ╓─────────────────────────────────────────────────────────────────╖
- ║ Program..: XDEMO.PRG ║
- ║ Author...: Roger J. Donnay ║
- ║ Notice...: (c) DONNAY Software Designs 1987-2001 ║
- ║ Date.....: Sep 15, 2001 ║
- ║ Notes....: eXPress Demo Program ║
- ╙─────────────────────────────────────────────────────────────────╜
-
- This sample program is a menu system used to select one of five
- other demonstration programs included in XDEMO*.PRG and XSAMPLE*.PRG
- */
-
- #include "dcdialog.ch"
- #include "dcbitmap.ch"
- #include "dcicon.ch"
- #include "appevent.ch"
- #include "inkey.ch"
-
- #define VK_NUMLOCK 0x90
- #define VK_SCROLL 0x91
- #define VK_CAPITAL 0x14
- #define APPKEY_PRESSED 2
-
- STATIC bActiveBlock, oDialog
-
- FUNCTION XDemo()
-
- LOCAL Getlist, GetOptions, lDebugMode := .f., oDebug, ;
- oAppWindow := SetAppWindow(), oMenuBar, oMenuFile, ;
- oMenuSample, oMenuApp, nEvent, mp1, mp2, oXbp, oMsgBox, ;
- cVersion, oStatBottom, oToolBottom, oMsgStatic, ;
- oNumStatic, oCapsStatic, oInsStatic, oThread, nWidth, ;
- nHeight, nWindowWidth, nWindowHeight, nColPixels, nRowPixels,;
- cSayFont, cGetFont
-
- Private oTest
-
- DC_Gui(.t.)
- DC_IconDefault(ICON_EXPRESS)
-
- #ifdef EXPRESS20
- ErrorBlock({|e|DC_ErrorGui(e)})
- DC_SetdCLIP('..\DICT')
- #endif
-
- DC_DotHotKey(xbeK_ALT_F12)
-
- GetList := {}
- SET PATH TO ..\DATA
-
- DC_ChDir(DC_Path(AppName(.t.)))
-
- DCMENUBAR oMenuBar EVAL {|o|o:endMenu := {||oMsgBox:setCaption('')} }
-
- /* ---- File Submenu ---- */
-
- DCSUBMENU oMenuFile PROMPT "&File" PARENT oMenuBar ;
- MESSAGE 'Select Demo Run Mode' INTO oMsgBox
-
- DCMENUITEM "E~xit" PARENT oMenuFile ;
- ACTION _ActiveBlock( {|o|_XDemoExit(GetList)} ) ;
- MESSAGE 'Quit the eXPress++ Demo Program' INTO oMsgBox
-
- /* ---- Application Submenu ---- */
-
- DCSUBMENU oMenuApp PROMPT "&Applications" PARENT oMenuBar ;
- MESSAGE 'Miscellaneous Applications (with source code)' INTO oMsgBox
-
- DCMENUITEM "~Collection" PARENT oMenuApp ;
- MESSAGE 'My personal Inventory' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|XDemo_1(oDialog:drawingArea)} ) // XDEMO1.PRG
-
- DCMENUITEM "~Documentor - XDoc" PARENT oMenuApp ;
- MESSAGE 'My documentor' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|XDoc(oDialog:drawingArea)} ) // XDOC.PRG
-
- DCMENUITEM "ClipBoard Capture - XClipDoc" PARENT oMenuApp ;
- MESSAGE 'My Clipboard Capture' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|XClipDoc(oDialog:drawingArea)} ) // CLIPDOC.PRG
-
- /* ---- Samples Submenu ---- */
-
- DCSUBMENU oMenuSample PROMPT "~Samples" PARENT oMenuBar ;
- MESSAGE 'Miscellanous Samples and Demo Programs (with source code)' ;
- INTO oMsgBox
-
- DCMENUITEM "~Sample Group 1" PARENT oMenuSample ;
- MESSAGE 'Run Sample Group #1' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|X_Samples_1(oDialog:drawingArea)} ) // XSAMPLE1.PRG
-
- DCMENUITEM "~Sample Group 2" PARENT oMenuSample ;
- MESSAGE 'Run Sample Group #2' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|X_Samples_2(oDialog:drawingArea)} ) // XSAMPLE2.PRG
-
- DCMENUITEM "~Sample Group 3" PARENT oMenuSample ;
- MESSAGE 'Run Sample Group #3' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|X_Samples_3(oDialog:drawingArea)} ) // XSAMPLE3.PRG
-
- DCMENUITEM "~Sample Group 4" PARENT oMenuSample ;
- MESSAGE 'Run Sample Group #4' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|X_Samples_4(oDialog:drawingArea)} ) // XSAMPLE4.PRG
-
- DCMENUITEM "~Sample Group 5" PARENT oMenuSample ;
- MESSAGE 'Run Sample Group #5' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|X_Samples_5(oDialog:drawingArea)} ) // XSAMPLE5.PRG
-
- DCMENUITEM "~Sample Group 6" PARENT oMenuSample ;
- MESSAGE 'Run Sample Group #6' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|X_Samples_6(oDialog:drawingArea)} ) // XSAMPLE6.PRG
-
- DCMENUITEM SEPARATOR PARENT oMenuSample
-
- DCMENUITEM "Demo Program 2" PARENT oMenuSample ;
- MESSAGE 'Run Demo Program #2' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|XDemo_2(oDialog:drawingArea)} ) // XDEMO2.PRG
-
- DCMENUITEM "Demo Program 3" PARENT oMenuSample ;
- MESSAGE 'Run Demo Program #3' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|XDemo_3(oDialog:drawingArea)} ) // XDEMO3.PRG
-
- DCMENUITEM "Demo Program 4 (Gui)" PARENT oMenuSample ;
- MESSAGE 'Run Demo Program #4 in Gui Mode' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|XDemo_4(oDialog:drawingArea,.t.)} ) // XDEMO4.PRG
-
- DCMENUITEM "Demo Program 4 (Text)" PARENT oMenuSample ;
- MESSAGE 'Run Demo Program #4 in Text Mode' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|XDemo_4(oDialog:drawingArea,.f.)} ) // XDEMO4.PRG
-
- DCMENUITEM "Demo Program 5" PARENT oMenuSample ;
- MESSAGE 'Run Demo Program #5' INTO oMsgBox ;
- ACTION _ActiveBlock( {|o|XDemo_5(oDialog:drawingArea)} ) // XDEMO5.PRG
-
-
- // Bottom Statusbar with message, scrollbar, buttons, key status
- DCSTATUSBAR oStatBottom HEIGHT 28 ALIGN DCGUI_ALIGN_BOTTOM
-
- @ 3,0 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX ;
- SIZE 450,20 ;
- PARENT oStatBottom PIXEL OBJECT oMsgStatic
-
- @ 1,2 DCSAY '' ;
- SIZE 450,18 ;
- SAYCENTER ;
- COLOR GRA_CLR_BLUE, GRA_CLR_BACKGROUND ;
- OBJECT oMsgBox PARENT oMsgStatic PIXEL ;
- FONT '8.Tahoma'
-
- @ 3,0 DCTOOLBAR oToolBottom SIZE 84,20 BUTTONSIZE 40,20 ;
- TYPE XBPSTATIC_TYPE_RECESSEDBOX PARENT oStatBottom PIXEL
-
- DCADDBUTTON CAPTION '&Exit' ;
- ACTION {||DC_ReadGuiEvent(DCGUI_EXIT_OK,GetList)} ;
- PARENT oToolBottom PIXEL ;
- WHEN {||Valtype(DC_GetCargo(oDialog))#'L'.OR.!DC_GetCargo(oDialog)} ;
- TOOLTIP 'Exit this Demo Program'
-
- DCADDBUTTON TYPE XBPSTATIC_TYPE_RAISEDBOX SIZE 3,22 ;
- PARENT oToolBottom PIXEL
-
- DCADDBUTTON CAPTION '~View' ;
- ACTION {||DC_ArrayView(AppDeskTop())} ;
- PARENT oToolBottom PIXEL ;
- TOOLTIP 'View/Browse the Application Object Tree'
-
- @ 3,0 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX ;
- SIZE 30,20 PARENT oStatBottom PIXEL OBJECT oCapsStatic
-
- @ 3,1 DCSAY 'Caps' PARENT oCapsStatic ID 'CAPSLOCK' ;
- SAYSIZE 28,18 SAYCENTER PIXEL FONT '7.Helv'
-
- @ 3,0 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX ;
- SIZE 30,20 PARENT oStatBottom PIXEL OBJECT oNumStatic
-
- @ 3,1 DCSAY 'Num' PARENT oNumStatic ID 'NUMLOCK' ;
- SAYSIZE 28,18 SAYCENTER PIXEL FONT '7.Helv'
-
- @ 3,0 DCSTATIC TYPE XBPSTATIC_TYPE_RECESSEDBOX ;
- SIZE 30,20 PARENT oStatBottom PIXEL OBJECT oInsStatic
-
- @ 3,1 DCSAY '' PARENT oInsStatic ID 'INSERT' ;
- SAYSIZE 28,18 SAYCENTER PIXEL FONT '7.Helv'
-
-
- // @ 2, 5 DCSTATIC XBPSTATIC_TYPE_TEXT SIZE 25,1 /*COLOR GRA_CLR_RED*/ ;
- // CAPTION 'test' OBJECT M->oTest FONT '10.Arial CE' ;
- // OPTIONS XBPSTATIC_TEXT_CENTER+XBPSTATIC_TEXT_VCENTER
-
-
- DCHOTKEY xbeK_INS ACTION {||ReadInsert(!ReadInsert())}
-
- nWidth := AppDeskTop():currentSize()[1]
- nHeight := AppDeskTop():currentSize()[2]
-
- IF nWidth <= 800
- nWindowWidth := 640
- nWindowHeight := 500
- cSayFont := '7.Helv'
- cGetFont := '9.Courier New'
- nColPixels := 7
- nRowPixels := 20
- ELSEIF nWidth <= 1024
- nWindowWidth := 800
- nWindowHeight := 600
- cSayFont := '8.Helv'
- cGetFont := '10.Courier New'
- nColPixels := 8.5
- nRowPixels := 24
- ELSEIF nWidth <= 1280
- nWindowWidth := 1000
- nWindowHeight := 800
- cSayFont := '10.Helv'
- cGetFont := '11.Courier New'
- nColPixels := 10
- nRowPixels := 28
- ELSE
- nWindowWidth := 1200
- nWindowHeight := 1000
- cSayFont := '11.Helv'
- cGetFont := '12.Courier New'
- nColPixels := 11.5
- nRowPixels := 32
- ENDIF
-
- DCGETOPTIONS ;
- WINDOWHEIGHT nWindowHeight ;
- WINDOWWIDTH nWindowWidth ;
- HELPFILE '..\DOC\EXPRESS.HLP' ;
- BITMAP BITMAP_EXPRESS_BACKGROUND1 ;
- ICON ICON_EXPRESS ;
- NOBUSY ;
- SAYFONT cSayFont ;
- GETFONT cGetFont ;
- FONT cSayFont ;
- COLPIXELS nColPixels ;
- ROWPIXELS nRowPixels ;
- ROWSPACE nRowPixels ;
- AUTOWINDOWMENU ;
- TOOLTIPCOLOR GRA_CLR_BLACK, GRA_CLR_YELLOW ;
- ABORTQUERY MSG {||DC_MsgBox(,,{'Exit eXPress++ Demo?'},,,,.t.)} ;
- CLOSEQUERY MSG {||DC_MsgBox(,,{'Exit eXPress++ Demo?'},,,,.t.)} ;
- EVAL {|o|SetTimerEvent(100,{||_UpdateStats(GetList)},SetAppWindow(o)) }
-
- DC_GetOptDefault(GetOptions)
-
- cVersion := '1.3'
-
- #ifdef EXPRESS15
- cVersion := '1.6'
- #endif
-
- #ifdef EXPRESS16
- cVersion := '1.6'
- #endif
-
- #ifdef EXPRESS17
- cVersion := '1.7'
- #endif
-
- #ifdef EXPRESS20
- cVersion := '2.0'
- #endif
-
- FErase('XPP' + GetNetName())
-
- DCREAD GUI ;
- TITLE 'eXPress++ Version ' + cVersion OPTIONS GetOptions ;
- PARENT @oDialog ;
-
- SetAppWindow(oAppWindow)
-
- SetTimerEvent(0)
-
- RETURN nil
-
- * --------------------- *
-
- FUNCTION _ActiveBlock( bBlock )
-
- RETURN {|o|o:=Thread():new(),o:Start(bBlock)}
-
- /* --------------------- */
-
- STATIC FUNCTION _XDemoExit( GetList )
-
- IF DC_MsgBox(,,{'Are you sure you want to Quit the eXPress++ Demo?'}, ;
- 'eXPress++',,,.t.)
- QUIT
- ENDIF
-
- RETURN nil
-
- * ------------------
-
- FUNCTION _UpdateStats( GetList )
-
- STATIC snCaps := 0, snNum := 0
-
- LOCAL oCapsLock := DC_GetObject(GetList,'CAPSLOCK')
- LOCAL oNumLock := DC_GetObject(GetList,'NUMLOCK')
- LOCAL oInsert := DC_GetObject(GetList,'INSERT')
- LOCAL nCaps := AppKeystate( VK_CAPITAL, .T. )
- LOCAL nNum := AppKeystate( VK_NUMLOCK, .T. )
- LOCAL oCapsStatic, oNumStatic
-
- IF Valtype(oCapsLock) # 'O' .OR. Valtype(oNumLock) # 'O' .OR. Valtype(oInsert) # 'O'
- RETURN nil
- ENDIF
-
- oNumStatic := oNumLock:setParent()
- IF nNum == APPKEY_PRESSED
- oNumLock:enable()
- ELSE
- oNumLock:disable()
- ENDIF
-
- oCapsStatic := oCapsLock:setParent()
- IF nCaps == APPKEY_PRESSED
- oCapsLock:enable()
- ELSE
- oCapsLock:disable()
- ENDIF
-
- IF ReadInsert()
- oInsert:SetCaption( "Ins" )
- ELSE
- oInsert:SetCaption( "Ovr" )
- ENDIF
-
- RETURN nil
-
-
- // Retrieving Computername
-
- #INCLUDE "DLL.CH"
-
- DLLFUNCTION RegOpenKeyExA(nHkeyClass, cKeyName, reserved, access, @nKeyHandle);
- USING STDCALL FROM ADVAPI32.DLL
-
- DLLFUNCTION RegQueryValueExA(nKeyHandle, cEntry, reserved, @valueType, ;
- @cName, @nSize);
- USING STDCALL FROM ADVAPI32.DLL
-
- DLLFUNCTION RegCloseKey( nKeyHandle );
- USING STDCALL FROM ADVAPI32.DLL
-
- FUNCTION GetNetName()
-
- LOCAL nHKey := 2147483650
- LOCAL cKeyName := "System\CurrentControlSet\Control\ComputerName\ComputerName"
- LOCAL cEntryName := "Computername"
- LOCAL cName := "", rc
- LOCAL nNameSize
- LOCAL nKeyHandle
- LOCAL nValueType
- nKeyHandle := 0
- IF RegOpenKeyExA(nHKey, cKeyName,0, 1, @nKeyHandle) = 0
- nValueType := 0
- nNameSize := 0
- RegQueryValueExA(nKeyHandle, cEntryName, 0, @nValueType, 0, @nNameSize)
- IF nNameSize > 0
- cName := space( nNameSize )
- rc := RegQueryValueExA(nKeyHandle, cEntryName,;
- 0, @nValueType, @cName, @nNameSize)
- ENDIF
- RegCloseKey( nKeyHandle)
- ENDIF
-
- RETURN (upper(alltrim(cName)))
-
-
-
-
-