home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- * Header File : GHOST.CH *
- * *
- * Author : R.P.J. van Geest *
- * Copyright : 1993 - (c) GhostWare *
- * *
- * Description : Header file for the GhostWare libraries GHOST.LIB, *
- * GHOSTHOL.LIB and GHOSTUSA.LIB *
- * *
- * Date created : 13-05-92 updated : ■22-03-94 *
- * Time created : 16:11:13 updated : ■16:07:06 *
- *****************************************************************************/
-
- // You can use this statement when compiling with Clipper 5.2
- #STDOUT Using GHOST.CH - version 2.3 by GhostWare (c) 1991-1994
-
- // If you used version 1.x, include the following line too.
- // #INCLUDE "CONV2GW.CH"
-
- // Include this header file for pulldown MENU commands
- #INCLUDE "GWMENU.CH"
-
- // Some handy defines **********************
- #DEFINE FOREVER WHILE .T.
- #DEFINE EEUWIG WHILE .T.
- #DEFINE TRUE .T.
- #DEFINE FALSE .F.
- #DEFINE WAAR .T.
- #DEFINE ONWAAR .F.
- #DEFINE EMPTYDATE CTOD(' - - ')
- #DEFINE LEGEDATUM CTOD(' - - ')
- #DEFINE legedatum CTOD(' - - ')
- #DEFINE K_MINUS 45
- #DEFINE K_PLUS 43
-
- // BOX border drawing characters
- // Thick border
- #DEFINE B_THICK ( '█▀███▄██' )
- #DEFINE B_ZEER_VET ( '█▀███▄██' )
- // Box border special FONT GHOSTEGA.FON or GHOSTVGA.FON
- #DEFINE B_GHOST_FONT ( '╞╟╚▐╔╩╦▌' )
-
- //------------------------------//
- // UDC's for GHOSTlib functions //
- //------------------------------//
- #COMMAND SET EXPLOSION [OFF] => GWExplosion(.F.)
- #COMMAND SET EXPLOSION ON => GWExplosion(.T.)
-
- #COMMAND SET GRAPH [OFF] => GWUseSpecial(.F.)
- #COMMAND SET GRAPH ON => GWUseSpecial(.T.)
-
- #COMMAND SET MOUSE [OFF] => GWmUse(.F.)
- #COMMAND SET MOUSE ON => GWmUse(.T.)
-
- #COMMAND SET SCREENSAVER TO [<cSaver>] ;
- [AFTER <nSeconds>] => GWScreenSaver(<{cSaver}>, <nSeconds>)
-
- #COMMAND SET SHADOWHEIGHT TO [<nHeight>] ;
- => GWShadowHeight(IIF(<.nHeight.>, <nHeight>, 1))
-
- #COMMAND LOG ERRORS [OFF] => GWSaveErrors(.F.)
- #COMMAND LOG ERRORS ON => GWSaveErrors(.T.)
-
- #COMMAND HELPTOETS <nKey> => ;
- SETKEY( <nKey>, { | cProcName,nProcLine,cProcVar | ;
- GWHELP( cProcName, nProcLine, cProcVar, <nKey> ) ;
- } )
-
- #COMMAND HELPTOETS => ;
- SETKEY( 28 , { | cProcName,nProcLine,cProcVar | ;
- GWHELP( cProcName, nProcLine, cProcVar, 28 ) ;
- } )
-
- #XCOMMAND GWASKTHIS ;
- [QUESTION <question>] ;
- [[WITH] ANSWERS <answers>] ;
- [INITPOSITION <initpos>] ;
- [COLOR <color>] ;
- [<vertical:VERTICAL>] ;
- [<horizontal:HORIZONTAL>] ;
- [AT <top>[,<left>]] ;
- [BORDER <border>] ;
- [ALLOWED <allowed>] ;
- [<vars:TO> <var>] ;
- => ;
- [<var> :=] GWAsk(<question>, <answers>, ;
- <initpos>, <color>, ;
- IIF(<.vertical.>, "V", "H"), ;
- <top>, <left>, <border>, <allowed>)
-
- #XCOMMAND ASKTHIS <*rest*> => GWASKTHIS <rest> // Same as the above command
-
- #XCOMMAND GWBOX ;
- [AT <top>, <left>, <bottom>, <right>] ;
- [COLOR <color>] ;
- [LEVEL <level>] ;
- [BORDER <border>] ;
- [<explode:EXPLODE>] ;
- [<vars:TO> <var>] ;
- => ;
- [<var> :=] GWShadowBox(<top>, <left>, ;
- <bottom>, <right>, <color>, <level>, ;
- <border>, <.explode.>)
-
- #XCOMMAND SHADOWBOX <*rest*> => GWBOX <rest> // Same as the above command
-
- #XCOMMAND GWDBFBROWSE ;
- [AT <top>,<left>,<bottom>,<right>] ;
- [FIELDS <fields>] ;
- [TITLES <tits>] ;
- [FREEZE <freeze>] ;
- [<edit:EDIT>] ;
- [<del:DEL>] ;
- [<add:ADD>] ;
- [COLOR <color>] ;
- [<counter:COUNTER>] ;
- [<vertical:VERTICAL>] ;
- [<horizontal:HORIZONTAL>] ;
- [<enterischoice:ENTERISCHOICE>] ;
- [FUNCTION <function>] ;
- [<sat:SAT> <stop>,<sleft>,<sbottom>,<sright>] ;
- [SFIELDS <sflds>] ;
- [STITLES <stits>] ;
- [<special:SPECIAL>] ;
- [<spaceedit:SPACEEDIT>] ;
- [<printmag:PRINT>] ;
- [KEYS <newkeys>] ;
- [<restore:RESTORE>] ;
- [STABLEBLOCK <stable>] ;
- [<helpline:HELPLINE>] ;
- [SEPARATORS <separators>] ;
- [<noconfirm:NOCONFIRM>] ;
- => ;
- GWBrowseDBF(<top>, <left>, <bottom>, <right>, ;
- <fields>, ;
- IIF( <.tits.>, <tits> ,NIL ), ;
- <freeze>, ;
- <.edit.>, <.del.>, <.add.>, <color>, ;
- <.counter.>, <.vertical.>, ;
- <.horizontal.>, <.enterischoice.>, ;
- <function>, ;
- IIF( <.sflds.> , ;
- { <stop>, <sleft>, <sbottom>, ;
- <sright>, IIF( <.sflds.>, <sflds>, NIL), ;
- IIF( <.stits.>, <stits> ,NIL ) ;
- }, ;
- NIL), ;
- NIL, <.spaceedit.>, <.printmag.>, ;
- IIF( <.newkeys.>, <newkeys> ,NIL ), <.restore.>, ;
- IIF( <.stable.>, <stable> ,NIL ), <.helpline.>, ;
- <separators>, <.noconfirm.> )
-
- #XCOMMAND DBFBROWSE <*rest*> => GWDBFBROWSE <rest> // Same as the above command
-
- #XCOMMAND GWARRBROWSE ;
- [AT <top>,<left>,<bottom>,<right>] ;
- [ARRAY <arrayname>] ;
- [<titles:TITLES> <tits>] ;
- [<vars:VAR> <var>] ;
- [FREEZE <freeze>] ;
- [COLOR <color>] ;
- [<counter:COUNTER>] ;
- [<vertical:VERTICAL>] ;
- [<horizontal:HORIZONTAL>] ;
- [<enterischoice:ENTERISCHOICE>] ;
- [<tag:TAG>] ;
- [<special:SPECIAL>] ;
- [<printmag:PRINT>] ;
- [<restore:RESTORE>] ;
- [STABLEBLOCK <stable>] ;
- [<helpline:HELPLINE>] ;
- [SEPARATORS <separators>] ;
- [KEYS <newkeys>] ;
- => ;
- [<var> :=] GWBrowseArray(<top>, <left>, <bottom>, <right>, ;
- <arrayname>, ;
- IIF( <.titles.>, <tits> ,NIL ), ;
- <freeze>, <color>, <.counter.>, <.vertical.>, ;
- <.horizontal.>, <.enterischoice.>, <.tag.>, ;
- NIL, <.printmag.>, <.restore.>, ;
- IIF( <.stable.>, <stable> ,NIL ), <.helpline.>, ;
- <separators>, <newkeys> )
-
- #XCOMMAND ARRBROWSE <*rest*> => GWARRBROWSE <rest> // Same as the above command
-
- #XCOMMAND GWTXTBROWSE ;
- [FILE <file>] ;
- [AT <top>,<left>,<bottom>,<right>] ;
- [COLOR <color>] ;
- [<linenum:LINENUM>] ;
- [<special:SPECIAL>] ;
- [<printmag:PRINT>] ;
- [<restore:RESTORE>] ;
- => ;
- GWBrowseText(<file>, <top>, <left>, <bottom>, <right>, ;
- <(color)>, <.linenum.>, NIL, <.printmag.>, <.restore.>)
-
- #XCOMMAND TXTBROWSE <*rest*> => GWTXTBROWSE <rest> // Same as the above command
-
- #XCOMMAND LABEL <xFields,...> ;
- [LINES <nLines>] ;
- [WIDTH <nWidth>] ;
- [HORIZONTAL [SPACE] <nHSpace>] ;
- [VERTICAL [SPACE] <nVSpace>] ;
- [COLUMNS <nColumns>] ;
- [PAGELENGTH <nLength>] ;
- [LEFTMARGIN <nLMargin>] ;
- [TOPMARGIN <nTMargin>] ;
- [COPIES <nCopies>] ;
- [<lSamples:SAMPLES>] ;
- => ;
- GWLabel({|| {<xFields>} }, <nLines>, ;
- <nWidth>, <nHSpace>, <nVSpace>, ;
- <nColumns>, <nLength>, <nLMargin>, ;
- <nTMargin>, <nCopies>, <.lSamples.>)
-
- /***
- * Redefinition of @ ... GET ... for mouse sensitive GETs
- *
- * This is a copy of @ ... GET ... from STD.CH
- */
- #command @ <row>, <col> GET <var> ;
- [PICTURE <pic>] ;
- [VALID <valid>] ;
- [WHEN <when>] ;
- [SEND <msg>] ;
- ;
- => SetPos( <row>, <col> ) ;
- ; GWmSet(.F.) ;
- ; AAdd( ;
- GetList, ;
- _GET_( <var>, <(var)>, <pic>, <{valid}>, <{when}> ):display();
- ) ;
- ; GWmSet(GWmPresent()) ;
- [; ATail(GetList):<msg>]
-
- // New GET command that does display the get field initially
- #command @ <row>, <col> GET <var> NODISPLAY ;
- [PICTURE <pic>] ;
- [VALID <valid>] ;
- [WHEN <when>] ;
- [SEND <msg>] ;
- ;
- => SetPos( <row>, <col> ) ;
- ; GWmSet(.F.) ;
- ; AAdd( ;
- GetList, ;
- _GET_( <var>, <(var)>, <pic>, <{valid}>, <{when}> ) ;
- ) ;
- ; GWmSet(GWmPresent()) ;
- [; ATail(GetList):<msg>]
-
- // New GET command that does display the get field initially
- // @..GET..NODISPLAY COLOR
- #command @ <row>, <col> GET <var> NODISPLAY ;
- [<clauses,...>] ;
- COLOR <color> ;
- [<moreClauses,...>] ;
- ;
- => @ <row>, <col> GET <var> NODISPLAY ;
- [<clauses>] ;
- SEND colorSpec:=<color> ;
- [<moreClauses>]
-
- /***
- * Redefinition of READ
- *
- * This is a copy of READ from STD.CH
- */
-
- #COMMAND READ SAVE [<validate:VALIDATE>] ;
- => READMODAL(GetList, , <.validate.>)
-
- #COMMAND READ [<validate:VALIDATE>] ;
- => READMODAL(GetList, , <.validate.>) ;
- ; GetList := {}
-
- //
- // New GET commands
- //
- // 'NODISPLAY' makes sure that the contents of <var> is NOT displayed
- // on the screen initially.
- //
-
- #COMMAND @ <row>, <col> GET <var> RADIO <boxes> ;
- [<clauses,...>] ;
- [ANSWERS <answers>] ;
- [<horizontal:HORIZONTAL>] ;
- [CHECK <char>] ;
- [RADIOCOLOR <color>] ;
- => @ <row>, <col> GET <var> NODISPLAY ;
- [<clauses>] ;
- SEND cargo:={"RADIO", <boxes>, <answers>, ;
- NIL, <.horizontal.>, <char>, <color>, NIL, "NODISP"};
- SEND reader:={|oGet| GWRadioReader(oGet)} ; ;
- GWRadioDisp(ATAIL(Getlist), <var>)
-
- #COMMAND @ <row>, <col> GET <var> CHECKBOX <boxes> ;
- [<clauses,...>] ;
- [ANSWERS <answers>] ;
- [<horizontal:HORIZONTAL>] ;
- [CHECK <char>] ;
- [CHECKCOLOR <color>] ;
- => @ <row>, <col> GET <var> NODISPLAY ;
- [<clauses>] ;
- SEND cargo:={"BOXES", <boxes>, <answers>, ;
- NIL, <.horizontal.>, <char>, <color>, NIL, "NODISP"};
- SEND reader:={|oGet| GWCheckReader(oGet)} ; ;
- GWCheckDisp(ATAIL(Getlist), <var>)
-
- #COMMAND @ <row>, <col> GET MEMO <var> ;
- [<clauses,...>] ;
- [AT <t>, <l>, <b>, <r>] ;
- [KEY <key>] [TITLE <title> ] ;
- [BLOCK <block>] ;
- => @ <row>, <col> GET <var> NODISPLAY ;
- [<clauses>] ;
- SEND cargo:={"MEMO", {<t>, <l>, <b>, <r>}, <title>, <key>, <block>, "NODISP"} ;
- SEND reader:={|oGet| GWMemoReader(oGet)} ; ;
- GWMDisp(ATAIL(Getlist))
-
- #COMMAND @ <row>, <col> GET <var> ;
- [<clauses,...>] ;
- HISTORY <nMaxHistory> ;
- [<moreclauses,...>] ;
- => @ <row>, <col> GET <var> ;
- [<clauses>] ;
- SEND cargo := <nMaxHistory> ;
- SEND reader := {|g| GWHistoryReader(g) } ;
- [<moreclauses>]
-
- #COMMAND @ <row>, <col> GET <var> ;
- [<clauses,...>] ;
- PASSWORD ;
- [<moreClauses,...>] ;
- => @ <row>, <col> GET <var> ;
- [<clauses>] ;
- SEND reader := {|g| GWPWReader(g)} ;
- [<moreClauses>] ; ;
- GWPWDisp(ATAIL(GetList),<var>)
-
- #COMMAND @ <row>, <col> GET <var> ;
- [<clauses,...>] ;
- INITIALS ;
- [<moreClauses>] ;
- => @ <row>, <col> GET <var> ;
- [<clauses>] ;
- SEND reader:={|g| GWInitialReader(g)} ;
- [<moreClauses>]
-
- #COMMAND @ <row>, <col> GET <var> ;
- [<clauses,...>] ;
- CALENDER ;
- [<moreClauses>] ;
- => @ <row>, <col> GET <var> ;
- [<clauses>] ;
- SEND reader:={|g| GWCalReader(g)} ;
- [<moreClauses>]
-
- #COMMAND @ <row>, <col> GET <var> ;
- [<clauses,...>] ;
- CALCULATOR ;
- [<moreClauses>] ;
- => @ <row>, <col> GET <var> ;
- [<clauses>] ;
- SEND reader:={|g| GWCalcReader(g)} ;
- [<moreClauses>]
-
- #COMMAND @ <row>, <col> GET <var> ;
- [<clauses,...>] ;
- BUTTON <text> ;
- [<d1:DO, EXECUTE> <do> [<stay:STAY, KEEP>]] ;
- [<exitread:EXITREAD, STOPREAD>] ;
- [<moreClauses>] ;
- => @ <row>, <col> GET <var> NODISPLAY ;
- [<clauses>] ;
- SEND cargo:={"BUTTON", <text>, <{do}>, <.stay.>, <.exitread.>, "NODISP"} ;
- SEND reader:={|g| GWButtonReader(g)} ;
- [<moreClauses>] ; ;
- GWButDisp(ATAIL(GetList),<text>)
-
- #COMMAND @ <row>, <col> GET <var> ;
- [<clauses,...>] ;
- PICK <aPickList> ;
- [QUESTION <cQuest>] ;
- [<moreClauses,...>] ;
- => @ <row>, <col> GET <var> ;
- [<clauses>] ;
- SEND reader:={|oGet| GWPickReader(oGet, <aPickList>, <cQuest>)} ;
- [<moreClauses>]
-
- //---------------------------------------//
- // End of : UDC's for GHOSTlib functions //
- //---------------------------------------//
-
- // Subscripts for field structure array of GWDBStruct()
- #DEFINE GWS_NAME 1
- #DEFINE GWS_TYPE 2
- #DEFINE GWS_LEN 3
- #DEFINE GWS_DEC 4
- #DEFINE GWS_AREA 5
- #DEFINE GWS_ALIAS 6
-
- // Subscripts for open files array of GWOpenDBF()
- #DEFINE GWOPENDBF_AREA 1
- #DEFINE GWOPENDBF_ALIAS 2
- #DEFINE GWOPENDBF_INDEX 3
- #DEFINE GWOPENDBF_CURR_INDEX 4
- #DEFINE GWOPENDBF_RDD 5
-
- // Subscripts for program's call stack array of GWTrace()
- #DEFINE GWTRACE_PROC 1
- #DEFINE GWTRACE_LINE 2
-
- // New commands
- #COMMAND REPEAT => WHILE (.T.)
- #COMMAND UNTIL <*expr*> => IF( <expr> ); EXIT; END; END
- #COMMAND SET DATE [TO] DUTCH => _DFSET( "dd-mm-yyyy", "dd-mm-yy" )
-
- // Preprocessor substitutes for in-line udfs
- #DEFINE DEFAULT(para_nm,sw) para_nm := IIF(para_nm==NIL, sw, para_nm)
-
- #XTRANSLATE Center( <ry>,<msg>[,<kleur>] ) => ;
- @<ry>,INT((MAXCOL()-LEN(<msg>))/2) SAY <msg> [COLOR <kleur>]
-
- #XTRANSLATE ashrink( <a> ) => ASIZE( <a>, LEN( <a> ) - 1 )
- #XTRANSLATE OutaBounds() => ( EOF() .or. BOF() )
- #XTRANSLATE ;
- TestParm( <parm>, <default> ) => IIF( VALTYPE( <parm> ) == ;
- VALTYPE( <default>), ;
- <parm>, <default> )
- #XTRANSLATE ;
- KillFiles( <mask> ) => AEVAL( DIRECTORY( <mask> ), ;
- {|f| FERASE( f\[1] ) } )
- #XTRANSLATE ;
- InsertCursor( <mode> ) => SETKEY( K_INS, IIF( <mode>, ;
- { || SETCURSOR( ;
- If( READINSERT( !READINSERT() ),;
- 1, 3) ) }, NIL ) )
-
- #XTRANSLATE ;
- InRange(<exp>,<lo>,<hi>) => ( <exp>>=<lo> .AND. <exp><=<hi> )
-