Files
harbour-core/tests/hbpp/_pp_test.prg
Viktor Szakats 0caff16650 2017-09-13 12:38 UTC Viktor Szakats (vszakats users.noreply.github.com)
- doc/en/hashes.txt
  - doc/en/rdddb.txt
  * .gitattributes
  * contrib/3rd/sqlite3/sqlite3.hbp
  * contrib/hbbz2/3rd/bz2/bz2.hbp
  * contrib/hbexpat/3rd/expat/expat.hbp
  * contrib/hbfimage/hbfimage.hbp
  * contrib/hbhpdf/3rd/libhpdf/libhpdf.hbp
  * contrib/hblzf/3rd/liblzf/lzf.hbp
  * contrib/hbmxml/3rd/minixml/mxml.hbp
  * contrib/hbmzip/3rd/minizip/minizip.hbp
  * contrib/hbodbc/hbodbc.hbp
  * contrib/hbtinymt/3rd/tinymt/tinymt.hbp
  * contrib/hbxdiff/3rd/libxdiff/xdiff.hbp
  * contrib/sddsqlt3/tests/test.prg
  * ChangeLog.txt
  * doc/Makefile
  * doc/oldnews.txt
  * extras/ps32/readme.txt
  * extras/superlib/readme.txt
  * src/3rd/jpeg/Makefile
  * src/3rd/pcre/Makefile
  * src/3rd/png/Makefile
  * src/3rd/tiff/Makefile
  * src/3rd/zlib/Makefile
  + contrib/hbsms/DEPRECATED.txt
  + contrib/hbtpathy/DEPRECATED.txt
  + contrib/xhb/WARNING.txt
  * contrib/3rd/sqlite3/sqlite3.dif -> contrib/3rd/sqlite3/sqlite3.diff
  * contrib/hbbz2/3rd/bz2/bz2.dif -> contrib/hbbz2/3rd/bz2/bz2.diff
  * contrib/hbexpat/3rd/expat/expat.dif -> contrib/hbexpat/3rd/expat/expat.diff
  * contrib/hbhpdf/3rd/libhpdf/libhpdf.dif -> contrib/hbhpdf/3rd/libhpdf/libhpdf.diff
  * contrib/hblzf/3rd/liblzf/liblzf.dif -> contrib/hblzf/3rd/liblzf/liblzf.diff
  * contrib/hbmxml/3rd/minixml/minixml.dif -> contrib/hbmxml/3rd/minixml/minixml.diff
  * contrib/hbmzip/3rd/minizip/minizip.dif -> contrib/hbmzip/3rd/minizip/minizip.diff
  * contrib/hbtinymt/3rd/tinymt/tinymt.dif -> contrib/hbtinymt/3rd/tinymt/tinymt.diff
  * contrib/hbxdiff/3rd/libxdiff/libxdiff.dif -> contrib/hbxdiff/3rd/libxdiff/xdiff.diff
  * contrib/sddsqlt3/tests/test.sq3 -> contrib/sddsqlt3/tests/test.sqlite3
  * extras/dbu/dbu52.dif -> extras/dbu/dbu52.patch
  * extras/dbu/dbu53.dif -> extras/dbu/dbu53.patch
  * extras/ps32/ps32.dif -> extras/ps32/ps32.patch
  * extras/rl/rl.dif -> extras/rl/rl.patch
  * extras/superlib/superlib.dif -> extras/superlib/superlib.patch
  * extras/template/readme.txt -> extras/template/README.md
  * src/3rd/hbdossrl/README -> src/3rd/hbdossrl/README.txt
  * src/3rd/jpeg/jpeg.dif -> src/3rd/jpeg/jpeg.diff
  * src/3rd/pcre/pcre.dif -> src/3rd/pcre/pcre.diff
  * src/3rd/png/png.dif -> src/3rd/png/png.diff
  * src/3rd/tiff/tiff.dif -> src/3rd/tiff/tiff.diff
  * src/3rd/zlib/zlib.dif -> src/3rd/zlib/zlib.diff
  * tests/hbpptest/_pp_test.prg -> tests/hbpp/_pp_test.prg
  * tests/hbpptest/compare.hb -> tests/hbpp/compare.hb
  * tests/hbpptest/hbpptest.hbp -> tests/hbpp/hbpptest.hbp
  * tests/hbpptest/hbpptest.prg -> tests/hbpp/hbpptest.prg
  * tests/tflock.prg -> tests/flock.prg
  * contrib/hbfimage/fi_wrp.c -> contrib/hbfimage/core.c
  * contrib/hbodbc/browodbc.prg -> contrib/hbodbc/browse.prg
  * doc/cmdline.txt -> doc/cmdline.md
  * extras/dbu/readme.txt -> extras/dbu/README.md
  * extras/rl/readme.txt -> extras/rl/README.md
    * some file renames synced with 3.4 fork, plus the content of
      some of them. Some new text files added as well.
      Note, 3rd party code rediffing won't work anymore on 8.3
      filesystems.
2017-09-13 12:39:48 +00:00

570 lines
19 KiB
Plaintext

/*
* Test file to check the preprocessor.
*
* Usage:
* 1) Execute compare.hb script for a comparison between Harbour and CA-Cl*pper:
* 'hbrun compare'
* 2) Results will be stored in pp_test.dif
*
* Notes:
* - clipper.exe (5.x) and diff executable need to be in the path.
* - requires 32-bit Windows OS
*
* Ignore most of errors reported during compilation.
*
*/
PROCEDURE Main()
#ifdef __HARBOUR__
#xtranslate CCC <v> => QOUT( <v>[2] [, <v>[<v>]\[3\]] )
CCC b
#endif
#xtranslate CCCC <v> => QOUT( <v><v>\[3\] )
CCCC c
#xtranslate AAA [A <a> [B <b>] ] => Qout([<a>][, <b>])
AAA
AAA A a
AAA A a B b
#define RED {255,0,0}
#ifdef __HARBOUR__
/* ---------------------------------------------------------------------*/
/* obligatory clause on left side used as optional clause on right side
* Clipper doesn't allow for it
*/
#xcommand SET COOLTIP TO <color> OF <form> => ;
SM( TTH (<"form">), 1, RGB(<color>\[1\], ;
<color>\[2\], ;
<color>[, <color>[ 3 ] ]), 0)
SET COOLTIP TO RED OF form1
#endif
#xcommand SET TOOLTIP TO <color> OF <form> => ;
SM( TTH (<"form">), 1, RGB(<color>\[1\], ;
<color>\[2\], ;
<color>\[ 3 \]), 0)
SET TOOLTIP TO RED OF form1
/* ---------------------------------------------------------------------*/
/* simple optional clause */
#command ZZZ [<v>] => QOUT( [ <v>\[1\] ] )
ZZZ a
ZZZ
ZZZ a[1]+2
ZZZ 1
ZZZ 'z'
ZZZ "z"
#translate TZZZ [<v>] => QOUT( [ <v>\[1\] ] )
TZZZ a
TZZZ
TZZZ a[1]+2
TZZZ 1
TZZZ 'z'
TZZZ "z"
/* ---------------------------------------------------------------------*/
#xtranslate _HMG_a => _HMG\[137\]
? _bro[ a( _HMG_a [i] ) ]
/* ---------------------------------------------------------------------*/
#define clas( x ) (x)
#ifdef __HARBOUR__
/* <!name!> is harbour extension match marker used to allow identifiers
* only
*/
#xtranslate ( <!name!>{ [<p,...>] } => (<name>():New(<p>)
a :=clas( TesT{ 1,2,3} )
a :=clas( a+3{ 11,2,3} )
a :=clas( a(){ 11,2,3} )
#endif
#xtranslate ( <name>{ [<p,...>] } => (<name>():New(<p>)
a :=clas( TEST{ 1,2,3} )
a :=clas( a+3{ 11,2,3} )
a :=clas( a(){ 11,2,3} )
/* ---------------------------------------------------------------------*/
#define DATENEW 1
#define DATEOLD(x) x
#define datediff(x,y) ( DATEOLD(x) - DATENEW )
#command datediff1(<x>,<y>) => ( DATEOLD(<x>) - DATENEW )
? datediff( x, y )
/* ---------------------------------------------------------------------*/
/* test for regular match marker */
#command _REGULAR_(<z>) => rm( <z> )
_REGULAR_(a)
_REGULAR_("a")
_REGULAR_('a')
_REGULAR_(["'a'"])
_REGULAR_(&a.1)
_REGULAR_(&a)
_REGULAR_(&a.)
_REGULAR_(&(a))
_REGULAR_(&a[1])
_REGULAR_(a[1])
_REGULAR_("['']")
//NORMAL
/* test for normal match marker */
#command _NORMAL_M(<z>) => nm( <"z"> )
_NORMAL_M(a)
_NORMAL_M("a")
_NORMAL_M('a')
_NORMAL_M(["'a'"])
_NORMAL_M(&a.1)
_NORMAL_M(&a)
_NORMAL_M(&a.)
_NORMAL_M(&(a))
_NORMAL_M(&a[1])
_NORMAL_M(a[1])
_NORMAL_M("['']")
//SMART
/* test for smart match marker */
#command _SMART_M(<z>) => sm( <(z)> )
_SMART_M(a)
_SMART_M("a")
_SMART_M('a')
_SMART_M(["'a'"])
_SMART_M(&a.1)
_SMART_M(&a)
_SMART_M(&a.)
_SMART_M(&(a))
_SMART_M(&a[1])
_SMART_M(a[1])
_SMART_M("['']")
//DUMB
/* test for dumb match marker */
#command _DUMB_M(<z>) => dm( #<z> )
_DUMB_M(a)
_DUMB_M("a")
_DUMB_M('a')
_DUMB_M(["'a'"])
_DUMB_M(&a.1)
_DUMB_M(&a)
_DUMB_M(&a.)
_DUMB_M(&(a))
_DUMB_M(&a[1])
_DUMB_M(a[1])
_DUMB_M("['']")
/* ---------------------------------------------------------------------*/
// REGULAR list
/* test for regular match marker */
#command _REGULAR_L(<z,...>) => rl( <z> )
_REGULAR_L(a,"a",'a',["'a'"],"['a']",'["a"]',&a.1,&a,&a.,&a. ,&(a),&a[1],&a.[1],&a. [2],&a&a, &a.a, a, a)
// NORMAL list
/* test for normal match marker */
#command _NORMAL_L(<z,...>) => nl( <"z"> )
_NORMAL_L(n,"n",'a',["'a'"],"['a']",'["a"]',&a.1,&a,&a.,&a. ,&(a),&a[1],&a.[1],&a. [2],&a&a, &.a, &a.a, a, a)
// SMART list
/* test for smart match marker */
#command _SMART_L(<z,...>) => sl( <(z)> )
_SMART_L(a,"a",'a',["'a'"],"['a']",'["a"]',&a.1,&a,&a.,&a. ,&(a),&a[1],&a.[1],&a. [2],&a&a, &.a, &a.a, a, a)
// DUMB list
/* test for dumb match marker */
#command _DUMB_L(<z,...>) => dl( #<z> )
_DUMB_L(a,"a",'a',["'a'"],"['a']",'["a"]',&a.1,&a,&a.,&a. ,&(a),&a[1],&a.[1],&a. [2],&a&a, &.a, &a.a, a, a)
/* ---------------------------------------------------------------------*/
/* test of preserving spaces in expressions */
/* Notice that Clipper and Harbour doesn't remove spaces from
* expressions passed for stingify
*/
index on LEFT( f1 , 10 ) to _tst
/* ---------------------------------------------------------------------*/
/* repeated optinal clauses */
#xcommand INSERT INTO <table> ( <uField1> [, <uFieldN> ] ) VALUES ( <uVal1> [, <uValN> ] ) => ;
if <table>->( dbappend() ) ;;
replace <table>-><uField1> with <uVal1> ;;
[ replace <table>-><uFieldN> with <uValN> ; ] ;
<table>->( dbunlock() ) ;;
endif
insert into test ( FIRST, LAST, STREET ) values ( "first", "last", "street" )
#xcommand INSERT2 INTO <table> ( <uField1> [, <uFieldN> ] ) VALUES ( <uVal1> [, <uValN> ] ) => ;
if <table>->( dbappend() ) ;;
<table>-><uField1> := <uVal1> ;;
[ <table>-><uFieldN> := <uValN> ; ] ;
<table>->( dbunlock() ) ;;
endif
insert2 into test ( FIRST, LAST, STREET ) ;
values ( "first", "last", "street" )
/* ---------------------------------------------------------------------*/
/* test for case sensitivity in define */
#define F1( n ) F2( n, N )
F1( 1 )
#define F3( nN, Nn ) F2( nN, Nn, NN, nn, N, n )
F3( 1, 2 )
/* ---------------------------------------------------------------------*/
/* test for different order of optional clauses */
#command MYCOMMAND [<mylist,...>] [MYCLAUSE <myval>] => ;
MyFunction( {<mylist>} [, <myval>] )
MYCOMMAND MYCLAUSE 321 "HELLO"
MYCOMMAND MYCLAUSE 321 "HELLO","all"
MYCOMMAND "HELLO","all" MYCLAUSE 321
#command MYCOMMAND2 [<mylist,...>] [MYCLAUSE <myval>] [ALL] => ;
MyFunction2( {<mylist>} [, <myval>] )
MYCOMMAND2 MYCLAUSE 321 "HELLO"
MYCOMMAND2 MYCLAUSE 321 "HELLO" ALL
MYCOMMAND2 ALL MYCLAUSE 321 "HELLO"
MYCOMMAND2 MYCLAUSE 321 "HELLO" ALL
MYCOMMAND2 MYCLAUSE 321 ALL "HELLO"
#xcommand MYCOMMAND3 [<myList,...>] ;
[MYCLAUSE <myVal>] [MYOTHER <myOther>] => MyFunction3( {<myList>}, <myVal>, <myOther> )
MYCOMMAND3 MYCLAUSE 322 "Hello" MYOTHER 1
MYCOMMAND3 MYOTHER 1 MYCLAUSE 322 "Hello"
MYCOMMAND3 "Hello" MYOTHER 1 MYCLAUSE 322
MYCOMMAND3 MYOTHER 1 "Hello" MYCLAUSE 322
/* ---------------------------------------------------------------------*/
/* Special restricted macro match marker (used in SET FILTER TO command */
/* <x:&> is matched when &variable or &(expression) are used
*/
SET FILTER TO &cVar.
SET FILTER TO &(cVar .AND. &cVar)
SET FILTER TO &cVar. .AND. cVar
/* ---------------------------------------------------------------------*/
#xtranslate XTRANS(<x>( => normal_match( <(x)> )
#xtranslate XTRANS(<x:&>( => macro_match( <(x)> )
XTRANS( cVar (
XTRANS( &cVar (
XTRANS( &cVar+1 (
XTRANS( &cVar. (
XTRANS( &cVar&cVar (
XTRANS( &cVar.&cVar (
XTRANS( &cVar.&cVar. (
XTRANS( (&cVar.) (
XTRANS( &(cVar) (
XTRANS( &cVar[3] (
XTRANS( &cVar. [3] (
XTRANS( &(cVar [3],&cvar) (
XTRANS( (&cVar. [3],&cvar) (
XTRANS( &cVar.1+5 (
XTRANS( &cVar .AND. cVar (
XTRANS( &cVar. .AND. cVar (
/* ---------------------------------------------------------------------*/
#xtranslate MXCALL <x:&> => (<x>)
#xtranslate MYCALL <x:&> <y> => <x>( <y>, 'mycall' )
#xtranslate MZCALL <x> <y> => <x>( <y>, "mzcall" )
#command FOO <x:&> FOO <y:&> => <(x)>+<(y)>
#translate BAR <x:&> BAR <y:&> => <(x)>+<(y)>
MYCALL &cVar ++cVar
MZCALL &cVar ++cVar
MYCALL &cVar+1 &cVar
MZCALL &cVar+1 &cVar
MXCALL &cVar
MXCALL &cVar.
MXCALL &cVar.1
MXCALL &cVar + 1
MYCALL &cVar &cVar
MYCALL &cVar. &cVar.
MYCALL &cVar.1 &cVar.1
MYCALL &cVar ++cVar
MYCALL &cVar. --cVar
MYCALL &cVar.1 !cVar
MYCALL &cVar+1 &cVar
MYCALL &cVar.+1 &cVar.
MYCALL &cVar.1+1 &cVar.1
MYCALL &cVar +1 &cVar
MYCALL &cVar. +1 &cVar.
MYCALL &cVar.1 +1 &cVar.1
MYCALL &cVar +1
MYCALL &cVar. +1
MYCALL &cVar.1 +1
FOO &cVar FOO &var.
BAR &cVar BAR &var.
FOO &cVar FOO &var.+1
BAR &cVar BAR &var.+1
MXCALL &cVar()
MXCALL &cVar++
(MXCALL &cVar)++
MXCALL &cVar.()
MXCALL &cVar.++
(MXCALL &cVar.)++
MXCALL &cVar.1 ()
MXCALL &cVar.1 ++
(MXCALL &cVar.1) ++
/* ---------------------------------------------------------------------*/
#translate MTRANSLATE <x> => normal_t(<"x">)
#translate MTRANSLATE <x:&> => macro_t(<(x)>)
#command MCOMMAND <x> => normal_c(<"x">)
#command MCOMMAND <x:&> => macro_c(<(x)>)
MTRANSLATE &cVar
MTRANSLATE &cVar.
MTRANSLATE &(cVar)
MTRANSLATE & (cVar)
MTRANSLATE &cVar&cVar
MTRANSLATE &cVar+1
MTRANSLATE &cVar.+1
MTRANSLATE &cVar. .AND. .T.
MTRANSLATE &cVar++
MTRANSLATE &cVar.++
MTRANSLATE &cVar+=1
MTRANSLATE &cVar.-=2
MTRANSLATE &cVar*=1
MTRANSLATE &cVar/=2
MTRANSLATE &cVar%=1
MTRANSLATE &cVar^=2
MTRANSLATE &cVar:=1
MTRANSLATE &cVar. .AND. .T.
MTRANSLATE &cVar .AND. .T.
MTRANSLATE &(cVar) +1
MTRANSLATE & (cVar) +1
MTRANSLATE &cVar.&cVar.
MTRANSLATE &cVar.&cVar.&cVar&cVar
MTRANSLATE &cVar.&(cVar)
/* command */
MCOMMAND &cVar
MCOMMAND &cVar.
MCOMMAND &(cVar)
MCOMMAND & (cVar)
MCOMMAND &cVar&cVar
MCOMMAND &cVar+1
MCOMMAND &cVar.+1
MCOMMAND &cVar. .AND. .T.
MCOMMAND &cVar++
MCOMMAND &cVar.++
MCOMMAND &cVar+=1
MCOMMAND &cVar.-=2
MCOMMAND &cVar*=1
MCOMMAND &cVar/=2
MCOMMAND &cVar%=12
MCOMMAND &cVar^=2
MCOMMAND &cVar:=1
MCOMMAND &cVar. .AND. .T.
MCOMMAND &cVar .AND. .T.
MCOMMAND &(cVar) +1
MCOMMAND & (cVar) +1
MCOMMAND &cVar.&cVar.
MCOMMAND &cVar.&cVar.&cVar&cVar2
MCOMMAND &cVar.&(cVar)
/* ---------------------------------------------------------------------*/
/* repeated optional clauses */
#xcommand SET <var1> [, <varN>] WITH <val> => <var1>:=<val> [; <varN>:=<val>]
SET v1 WITH 0
SET v1, v2 WITH 0
SET v1, v2, v3 WITH 0
SET v1, v2, v3, v4 WITH 0
#command AVG <x1> [, <xn>] TO <v1> [, <vn>] =>;
AVERAGE( {||<v1>:=<v1>+<x1>} [, {||<vn>:=<vn>+<xn>} ] )
AVG f1 TO s1
AVG f1, f2 TO s1, s2
AVG f1, f2, f3 TO s1, s2, s3
/* ---------------------------------------------------------------------*/
COPY STRUCTURE EXTENDED TO teststru
/* ---------------------------------------------------------------------*/
#ifdef __HARBOUR__
#command @ <row>, <col> GET <var> ;
[PICTURE <pic>] ;
[VALID <valid>] ;
[WHEN <when>] ;
[CAPTION <caption>] ;
[MESSAGE <message>] ;
[SEND <msg>] ;
;
=> SetPos( <row>, <col> ) ;
; AAdd( GetList, ;
_GET_( <var>, <"var">, <pic>, <{valid}>, <{when}> ) ) ;
[; ATail(GetList):Caption := <caption>] ;
[; ATail(GetList):CapRow := ATail(Getlist):row ;
; ATail(GetList):CapCol := ATail(Getlist):col - ;
__CapLength(<caption>) - 1] ;
[; ATail(GetList):message := <message>] ;
[; ATail(GetList):<msg>] ;
; ATail(GetList):Display()
#endif
@ 0,1 GET a
@ 0,2 GET a PICTURE "X"
@ 0,3 GET a PICTURE "X" VALID .T.
@ 0,4 GET a PICTURE "X" VALID .T. WHEN .T.
@ 0,5 GET a PICTURE "X" VALID .T. WHEN .T. CAPTION "myget"
@ 0,6 GET a PICTURE "X" VALID .T. WHEN .T. CAPTION "myget" MESSAGE "mymess"
@ 0,7 GET a PICTURE "X" VALID .T. WHEN .T. CAPTION "myget" MESSAGE "mymess" SEND send()
/* ---------------------------------------------------------------------*/
@ 1,1 GET a RANGE 0,100
@ 1,2 GET a PICTURE "X" RANGE 0,100
/* NOTE: Clipper fails here */
@ 1,3 GET a PICTURE "X" VALID .T. RANGE 0,100
@ 1,4 GET a PICTURE "X" WHEN .T. RANGE 0,100
@ 1,5 GET a PICTURE "X" WHEN .T. CAPTION "myget" RANGE 0,100
@ 1,6 GET a PICTURE "X" WHEN .T. CAPTION "myget" MESSAGE "mymess" RANGE 0,100
@ 1,7 GET a PICTURE "X" WHEN .T. CAPTION "myget" MESSAGE "mymess" SEND send() RANGE 0,100
@ 2,1 GET a
@ 2,2 GET a RANGE 0,100 PICTURE "X"
@ 2,3 GET a PICTURE "X" RANGE 0,100
@ 2,4 GET a PICTURE "X" RANGE 0,100 WHEN .T.
@ 2,5 GET a PICTURE "X" RANGE 0,100 WHEN .T. CAPTION "myget"
@ 2,6 GET a PICTURE "X" RANGE 0,100 WHEN .T. CAPTION "myget" MESSAGE "mymess"
@ 2,7 GET a PICTURE "X" RANGE 0,100 WHEN .T. CAPTION "myget" MESSAGE "mymess" SEND send()
/* ---------------------------------------------------------------------*/
#ifdef __HARBOUR__
#command @ <row>, <col> GET <var> ;
PUSHBUTTON ;
[VALID <valid>] ;
[WHEN <when>] ;
[CAPTION <caption>] ;
[MESSAGE <message>] ;
[COLOR <color>] ;
[FOCUS <fblock>] ;
[STATE <sblock>] ;
[STYLE <style>] ;
[SEND <msg>] ;
[GUISEND <guimsg>] ;
[SIZE X <sizex> Y <sizey>] ;
[CAPOFF X <capxoff> Y <capyoff>] ;
[BITMAP <bitmap>] ;
[BMPOFF X <bmpxoff> Y <bmpyoff>] ;
;
=> SetPos( <row>, <col> ) ;
; AAdd( GetList, ;
_GET_( <var>, <(var)>, NIL, <{valid}>, <{when}> ) ) ;
; ATail(GetList):Control := _PushButt_( <caption>, <message>, ;
<color>, <{fblock}>, <{sblock}>, <style>, ;
<sizex>, <sizey>, <capxoff>, <capyoff>, ;
<bitmap>, <bmpxoff>, <bmpyoff> ) ;
; ATail(GetList):reader := { | a, b, c, d | ;
GuiReader( a, b, c, d ) } ;
[; ATail(GetList):<msg>] ;
[; ATail(GetList):Control:<guimsg>] ;
; ATail(GetList):Control:Display()
#endif
@ 4,1 GET a PUSHBUTTON
@ 4,1 GET a PUSHBUTTON VALID valid()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap"
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes"
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus() STATE state()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus() STATE state() STYLE style()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus() STATE state() STYLE style() SEND send()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus() STATE state() STYLE style() SEND send() GUISEND guisend()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus() STATE state() STYLE style() SEND send() GUISEND guisend() SIZE X 100 Y 100
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus() STATE state() STYLE style() SEND send() GUISEND guisend() SIZE X 100 Y 100 CAPOFF X 10 Y 10
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus() STATE state() STYLE style() SEND send() GUISEND guisend() SIZE X 100 Y 100 CAPOFF X 10 Y 10 BITMAP bitmap()
@ 4,1 GET a PUSHBUTTON VALID valid() WHEN when() CAPTION "cap" MESSAGE "mes" COLOR color() FOCUS focus() STATE state() STYLE style() SEND send() GUISEND guisend() SIZE X 100 Y 100 CAPOFF X 10 Y 10 BITMAP bitmap() BMPOFF X 2 Y 2
@ 4,1 GET a PUSHBUTTON COLOR "W/N"
@ 4,1 GET a PUSHBUTTON COLOR "W/N" SIZE X 100 Y 100 BMPOFF X 2 Y 2 VALID valid() GUISEND guisend() WHEN when() MESSAGE "mes"
@ 4,1 GET a PUSHBUTTON SIZE X 100 Y 100 BMPOFF X 2 Y 2 VALID valid() GUISEND guisend() WHEN when() MESSAGE "mes" COLOR "W/N"
@ 4,1 GET a PUSHBUTTON SIZE X 100 Y 100 BMPOFF X 2 Y 2 VALID valid() GUISEND guisend() WHEN when() MESSAGE "mes" COLOR "W/N" CAPOFF X 10 Y 10 FOCUS focus() STATE state() STYLE style() SEND send() BITMAP bitmap() CAPTION "cap"
#command DEFINE CLIPBOARD <oClp> ;
[ FORMAT <format:TEXT,OEMTEXT,BITMAP,DIF> ] ;
[ OF <oWnd> ] ;
=> ;
<oClp> := TClipboard():New( [UPPER(<(format)>)], <oWnd> )
DEFINE CLIPBOARD oC OF oD FORMAT TEXT
#xcommand DECLARE WINDOW <w> ;
=>;
#xtranslate <w> . <p:Name,Title,f1,f2,f3,f4,f5,f6,f7,f8,f9> := <n> => SProp( <"w">, <"p"> , <n> )
#xcommand DEFINE WINDOW <w> [ON INIT <IProc>] =>;
DECLARE WINDOW <w> ; _DW( <"w">, <{IProc}> )
DEFINE WINDOW &oW
DEFINE WINDOW &oW ON INIT &oW.Title:= "My title"
&oW.Title := "title"
&oW.f9 := 9
/* statndard Clipper commands */
RELEASE ALL
RELEASE ALL LIKE A
RELEASE ALL EXCEPT A
SAVE ALL LIKE A TO A
SAVE TO A ALL LIKE A
SAVE TO A ALL
SAVE ALL EXCEPT A TO A
SAVE TO A ALL EXCEPT A
LIST
LIST TO PRINTER
LIST TO FILE a
LIST OFF
LIST OFF TO PRINTER
LIST OFF TO FILE a
LIST a
LIST a,b
LIST a,b,(seek(a+b),c)
LIST a TO PRINTER
LIST a TO FILE a
LIST a,b TO PRINTER
LIST a,b,(seek(a+b),c) TO FILE a
LIST a OFF TO PRINTER
LIST a OFF TO FILE a
LIST a,b OFF TO PRINTER
LIST a,b,(seek(a+b),c) OFF TO FILE a
LIST a TO PRINTER OFF
LIST a TO FILE a OFF
LIST a,b TO PRINTER OFF
LIST a,b,(seek(a+b),c) TO FILE a OFF
LIST TO PRINTER a,b,c
LIST TO FILE a a,b,c
LIST REST
LIST REST TO PRINTER
LIST REST TO FILE a
LIST REST OFF
LIST OFF REST
LIST REST ALL
LIST ALL
LIST ALL REST
LIST ALL OFF
LIST ALL TO PRINTER
LIST ALL ALL
LIST REST REST
LIST OFF OFF
LIST ALL ALL TO PRINTER
LIST REST REST TO PRINTER
LIST OFF OFF TO PRINTER
LIST (ALL) ALL
LIST (REST) REST
LIST (OFF) OFF
LIST ALL+ALL
LIST REST+REST
LIST OFF+OFF
LIST ALL+ALL ALL
LIST REST+REST REST
LIST OFF+OFF OFF
LIST ALL+ALL REST
LIST REST+REST OFF
LIST OFF+OFF ALL
RETURN