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