2011-08-15 10:20 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbcuied/cu_desgn.prg
- contrib/hbcuied/cu_field.prg
* contrib/hbcuied/cu_menu.prg
+ contrib/hbcuied/cu_object.prg
* contrib/hbcuied/cu_outpt.prg
* contrib/hbcuied/cu_prpty.prg
* contrib/hbcuied/hbcuied.hbp
* More refinements.
This commit is contained in:
@@ -16,6 +16,16 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2011-08-15 10:20 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbcuied/cu_desgn.prg
|
||||
- contrib/hbcuied/cu_field.prg
|
||||
* contrib/hbcuied/cu_menu.prg
|
||||
+ contrib/hbcuied/cu_object.prg
|
||||
* contrib/hbcuied/cu_outpt.prg
|
||||
* contrib/hbcuied/cu_prpty.prg
|
||||
* contrib/hbcuied/hbcuied.hbp
|
||||
* More refinements.
|
||||
|
||||
2011-08-13 17:25 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
|
||||
* contrib/hbcuied/cu_desgn.prg
|
||||
* contrib/hbcuied/cu_main.prg
|
||||
|
||||
@@ -177,7 +177,7 @@ FUNCTION Operate( obj_,scn_ )
|
||||
scrObject(obj_,scn_)
|
||||
|
||||
CASE scn_[ SCN_LASTKEY ] == K_F4 // Properties
|
||||
scrProperty(obj_,scn_)
|
||||
scrProperty( obj_,scn_ )
|
||||
|
||||
CASE scn_[ SCN_LASTKEY ] == K_F7 .OR. scn_[ SCN_LASTKEY ] == K_ALT_C // Copy
|
||||
scrObjCopy(obj_,scn_)
|
||||
@@ -405,22 +405,22 @@ FUNCTION scrMovUp(scn_)
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrMovDn(scn_)
|
||||
FUNCTION scrMovDn( scn_ )
|
||||
LOCAL lMoved := .t.
|
||||
|
||||
scn_[SCN_ROW_CUR]++
|
||||
IF scn_[SCN_ROW_CUR] > scn_[SCN_BOTTOM]
|
||||
scn_[SCN_ROW_CUR] := scn_[SCN_BOTTOM]
|
||||
IF scn_[SCN_ROW_REP] < scn_[SCN_REP_LINES]
|
||||
scn_[SCN_ROW_DIS]--
|
||||
scn_[SCN_ROW_REP]++
|
||||
scn_[SCN_REFRESH] := OBJ_REFRESH_ALL
|
||||
scn_[ SCN_ROW_CUR ]++
|
||||
IF scn_[ SCN_ROW_CUR ] > scn_[ SCN_BOTTOM ]
|
||||
scn_[ SCN_ROW_CUR ] := scn_[ SCN_BOTTOM ]
|
||||
IF scn_[ SCN_ROW_REP ] < scn_[ SCN_REP_LINES ]
|
||||
scn_[ SCN_ROW_DIS ]--
|
||||
scn_[ SCN_ROW_REP ]++
|
||||
scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL
|
||||
ELSE
|
||||
lMoved := .f.
|
||||
tone(300,1)
|
||||
ENDIF
|
||||
ELSE
|
||||
scn_[SCN_ROW_REP]++
|
||||
scn_[ SCN_ROW_REP ]++
|
||||
ENDIF
|
||||
RETURN lMoved
|
||||
|
||||
@@ -744,6 +744,31 @@ STATIC FUNCTION scrTxtProp( obj_, scn_, nObj )
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrOnLastCol( obj_, scn_, nObj )
|
||||
LOCAL nOff, i
|
||||
|
||||
IF obj_[ nObj, OBJ_TYPE ] == OBJ_O_BOX
|
||||
nOff := obj_[ nObj, OBJ_TO_COL ] - scn_[ SCN_COL_CUR ] - 1
|
||||
FOR i := 1 TO nOff
|
||||
scrMovRgt( scn_ )
|
||||
scrMove( obj_,scn_ )
|
||||
scrStatus( obj_,scn_ )
|
||||
NEXT
|
||||
|
||||
nOff := obj_[ nObj, OBJ_TO_ROW ] - scn_[ SCN_ROW_CUR ] - 1
|
||||
FOR i := 1 TO nOff
|
||||
scrMovDn( scn_ )
|
||||
scrMove( obj_,scn_ )
|
||||
scrStatus( obj_,scn_ )
|
||||
NEXT
|
||||
|
||||
SetPos( scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] )
|
||||
ENDIF
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION scrOnFirstCol( obj_,scn_,nObj,type_ )
|
||||
LOCAL nCur, nOff
|
||||
|
||||
@@ -804,11 +829,11 @@ FUNCTION scrGetChar(obj_,nRow,nCol)
|
||||
LOCAL s := THE_FILL,n
|
||||
|
||||
// Locate Text
|
||||
n := ascan(obj_,{|e_| e_[OBJ_ROW]==nRow .AND. ;
|
||||
VouchInRange(nCol,e_[OBJ_COL],e_[OBJ_TO_COL]) })
|
||||
n := ascan(obj_,{|e_| e_[ OBJ_ROW ] == nRow .AND. ;
|
||||
VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } )
|
||||
IF n == 0 // Locate Box
|
||||
n := ascan(obj_,{|e_| VouchInRange(nRow,e_[OBJ_ROW],e_[OBJ_TO_ROW]) .AND. ;
|
||||
VouchInRange(nCol,e_[OBJ_COL],e_[OBJ_TO_COL]) })
|
||||
n := ascan(obj_,{|e_| VouchInRange( nRow, e_[ OBJ_ROW ], e_[ OBJ_TO_ROW ] ) .AND. ;
|
||||
VouchInRange( nCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } )
|
||||
ENDIF
|
||||
|
||||
IF n > 0
|
||||
@@ -900,6 +925,7 @@ STATIC FUNCTION scrTextBlock(obj_,scn_)
|
||||
scrStatus(obj_,scn_)
|
||||
ENDDO
|
||||
scrMsg('')
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
@@ -911,13 +937,13 @@ STATIC FUNCTION scrTextMove(obj_,scn_,nMode)
|
||||
|
||||
DEFAULT nMode TO 0 // 0.Paste 1.Copy
|
||||
|
||||
IF !empty(scn_[SCN_TEXT_BLOCK_])
|
||||
IF ! empty( scn_[ SCN_TEXT_BLOCK_ ] )
|
||||
// CREATE a ghost movement block
|
||||
scrMsg('Use Arrow Keys TO Move Selected Block')
|
||||
// Check FOR current cursor position
|
||||
gst_:= {scn_[SCN_ROW_REP],scn_[SCN_COL_REP],;
|
||||
scn_[SCN_ROW_REP]+scn_[SCN_TEXT_BLOCK_,3]-scn_[SCN_TEXT_BLOCK_,1],;
|
||||
scn_[SCN_COL_REP]+scn_[SCN_TEXT_BLOCK_,4]-scn_[SCN_TEXT_BLOCK_,2]}
|
||||
gst_:= { scn_[ SCN_ROW_REP ] , scn_[ SCN_COL_REP ],;
|
||||
scn_[ SCN_ROW_REP ] + scn_[ SCN_TEXT_BLOCK_, 3 ] - scn_[ SCN_TEXT_BLOCK_, 1 ],;
|
||||
scn_[ SCN_COL_REP ] + scn_[ SCN_TEXT_BLOCK_, 4 ] - scn_[ SCN_TEXT_BLOCK_, 2 ] }
|
||||
DO WHILE .t.
|
||||
scrMove(obj_,scn_)
|
||||
scrDispGhost(obj_,scn_,gst_)
|
||||
@@ -946,45 +972,45 @@ STATIC FUNCTION scrTextMove(obj_,scn_,nMode)
|
||||
ENDCASE
|
||||
ENDDO
|
||||
// Post Selected Block TO Moved Area
|
||||
obj_:= scrTextPost(obj_,scn_,gst_,nMode)
|
||||
obj_:= scrTextPost( obj_, scn_, gst_, nMode )
|
||||
|
||||
scrOrdObj(obj_,scn_) // Update this routine TO show exact nature
|
||||
scrOrdObj( obj_, scn_ )
|
||||
|
||||
scrMove(obj_,scn_)
|
||||
scrStatus(obj_,scn_)
|
||||
scrMove( obj_, scn_ )
|
||||
scrStatus( obj_, scn_ )
|
||||
|
||||
scrMsg('')
|
||||
scrMsg()
|
||||
ENDIF
|
||||
setCursor(crs)
|
||||
|
||||
RETURN obj_
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION scrTextPost(obj_,scn_,gst_,nMode)
|
||||
// Good work of statistics
|
||||
STATIC FUNCTION scrTextPost( obj_, scn_, gst_, nMode )
|
||||
LOCAL n,i,s,s1,s2,s3,n1,nWid,nCol,nn
|
||||
LOCAL del_:={0},ins_:={},d_:={},ddd_
|
||||
LOCAL old_:= scn_[SCN_TEXT_BLOCK_]
|
||||
LOCAL old_:= scn_[ SCN_TEXT_BLOCK_ ]
|
||||
|
||||
FOR i := gst_[1] TO gst_[3]
|
||||
FOR i := gst_[ 1 ] TO gst_[ 3 ]
|
||||
n := -1
|
||||
DO WHILE .t.
|
||||
n := ascan(obj_,{|e_| e_[OBJ_ROW]==i ;
|
||||
n := ascan( obj_, {|e_| e_[ OBJ_ROW ] == i ;
|
||||
.AND. ;
|
||||
(VouchInRange(e_[OBJ_COL],gst_[2],gst_[4]);
|
||||
( VouchInRange(e_[OBJ_COL],gst_[2],gst_[4]);
|
||||
.OR. ;
|
||||
VouchInRange(e_[OBJ_TO_COL],gst_[2],gst_[4])) ;
|
||||
VouchInRange(e_[OBJ_TO_COL],gst_[2],gst_[4])) ;
|
||||
.AND.;
|
||||
!VouchInArray(n,del_) })
|
||||
! VouchInArray( n,del_ ) } )
|
||||
IF n > 0
|
||||
IF obj_[n,OBJ_TYPE] == OBJ_O_TEXT
|
||||
aadd(del_,n)
|
||||
IF obj_[ n,OBJ_TYPE ] == OBJ_O_TEXT
|
||||
aadd( del_, n )
|
||||
|
||||
s1 := '' ; ; s3 := ''
|
||||
s := obj_[n,OBJ_EQN]
|
||||
nCol := obj_[n,OBJ_COL]
|
||||
s1 := '' ; s3 := ''
|
||||
s := obj_[ n, OBJ_EQN ]
|
||||
nCol := obj_[ n, OBJ_COL ]
|
||||
|
||||
IF gst_[2] <= obj_[n,OBJ_COL] .AND. gst_[4] >= obj_[n,OBJ_TO_COL]
|
||||
IF gst_[2] <= obj_[ n, OBJ_COL ] .AND. gst_[ 4 ] >= obj_[ n, OBJ_TO_COL ]
|
||||
// Only deletion of OBJECT
|
||||
// s2 := s
|
||||
ELSEIF gst_[2] >= nCol
|
||||
@@ -997,36 +1023,38 @@ STATIC FUNCTION scrTextPost(obj_,scn_,gst_,nMode)
|
||||
s3 := substr(s,gst_[4]-nCol+2)
|
||||
ENDIF
|
||||
|
||||
IF len(s1)>0
|
||||
aadd(ins_,scrObjBlank())
|
||||
n1 := len(ins_)
|
||||
ins_[n1,OBJ_TYPE] := OBJ_O_TEXT
|
||||
ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW]
|
||||
ins_[n1,OBJ_COL] := obj_[n,OBJ_COL]
|
||||
ins_[n1,OBJ_EQN] := s1
|
||||
ins_[n1,OBJ_ID] := 'Text'
|
||||
ins_[n1,OBJ_COLOR] := 'W/B'
|
||||
ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION]
|
||||
ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ]
|
||||
ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s1)-1
|
||||
IF len( s1 ) > 0
|
||||
aadd( ins_,scrObjBlank() )
|
||||
n1 := len( ins_ )
|
||||
|
||||
ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT
|
||||
ins_[ n1, OBJ_ROW ] := obj_[ n, OBJ_ROW ]
|
||||
ins_[ n1, OBJ_COL ] := obj_[ n, OBJ_COL ]
|
||||
ins_[ n1, OBJ_EQN ] := s1
|
||||
ins_[ n1, OBJ_ID ] := 'Text'
|
||||
ins_[ n1, OBJ_COLOR ] := 'W/B'
|
||||
ins_[ n1, OBJ_SECTION ] := obj_[ n, OBJ_SECTION ]
|
||||
ins_[ n1, OBJ_TO_ROW ] := obj_[ n, OBJ_ROW ]
|
||||
ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + len( s1 ) - 1
|
||||
ENDIF
|
||||
|
||||
IF len(s3) > 0
|
||||
aadd(ins_,scrObjBlank())
|
||||
n1 := len(ins_)
|
||||
ins_[n1,OBJ_TYPE] := OBJ_O_TEXT
|
||||
ins_[n1,OBJ_ROW] := obj_[n,OBJ_ROW]
|
||||
ins_[n1,OBJ_COL] := gst_[4]+1
|
||||
ins_[n1,OBJ_EQN] := s3
|
||||
ins_[n1,OBJ_ID] := 'Text'
|
||||
ins_[n1,OBJ_COLOR] := 'W/B'
|
||||
ins_[n1,OBJ_SECTION] := obj_[n,OBJ_SECTION]
|
||||
ins_[n1,OBJ_TO_ROW] := obj_[n,OBJ_ROW ]
|
||||
ins_[n1,OBJ_TO_COL] := ins_[n1,OBJ_COL]+len(s3)-1
|
||||
IF len( s3 ) > 0
|
||||
aadd( ins_, scrObjBlank() )
|
||||
n1 := len( ins_ )
|
||||
|
||||
ins_[ n1, OBJ_TYPE ] := OBJ_O_TEXT
|
||||
ins_[ n1, OBJ_ROW ] := obj_[n, OBJ_ROW]
|
||||
ins_[ n1, OBJ_COL ] := gst_[ 4 ] + 1
|
||||
ins_[ n1, OBJ_EQN ] := s3
|
||||
ins_[ n1, OBJ_ID ] := 'Text'
|
||||
ins_[ n1, OBJ_COLOR ] := 'W/B'
|
||||
ins_[ n1, OBJ_SECTION ] := obj_[ n, OBJ_SECTION ]
|
||||
ins_[ n1, OBJ_TO_ROW ] := obj_[ n, OBJ_ROW ]
|
||||
ins_[ n1, OBJ_TO_COL ] := ins_[ n1, OBJ_COL ] + len( s3 ) - 1
|
||||
ENDIF
|
||||
|
||||
ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_FIELD .OR. obj_[n,OBJ_TYPE] == OBJ_O_EXP
|
||||
aadd(del_,n)
|
||||
aadd( del_, n )
|
||||
|
||||
ELSEIF obj_[n,OBJ_TYPE] == OBJ_O_BOX
|
||||
|
||||
@@ -1138,23 +1166,24 @@ STATIC FUNCTION scrTextPost(obj_,scn_,gst_,nMode)
|
||||
IF nMode <> 0
|
||||
del_:={}
|
||||
ENDIF
|
||||
aeval(ddd_,{|e| aadd(del_,e) })
|
||||
aeval( ddd_,{|e| aadd( del_, e ) } )
|
||||
|
||||
IF !empty(del_)
|
||||
FOR i := 1 TO len(obj_)
|
||||
IF ascan(del_,i) == 0
|
||||
aadd(d_,obj_[i])
|
||||
IF !empty( del_ )
|
||||
FOR i := 1 TO len( obj_)
|
||||
IF ascan( del_, i ) == 0
|
||||
aadd( d_, obj_[ i ] )
|
||||
ENDIF
|
||||
NEXT
|
||||
obj_:= aclone(d_)
|
||||
IF empty(obj_)
|
||||
aadd(obj_,scrObjBlank())
|
||||
obj_:= aclone( d_ )
|
||||
IF empty( obj_ )
|
||||
aadd( obj_, scrObjBlank() )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
aeval(ins_,{|e_| aadd(obj_,e_) })
|
||||
aeval( ins_, {|e_| aadd( obj_, e_ ) } )
|
||||
|
||||
scn_[SCN_TEXT_BLOCK_] := {}
|
||||
|
||||
RETURN obj_
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -1,521 +0,0 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
* CUI Forms Editor
|
||||
*
|
||||
* Copyright 2011 Pritpal Bedi <bedipritpal@hotmail.com>
|
||||
* http://harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this software; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
|
||||
* Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
|
||||
*
|
||||
* As a special exception, the Harbour Project gives permission for
|
||||
* additional uses of the text contained in its release of Harbour.
|
||||
*
|
||||
* The exception is that, if you link the Harbour libraries with other
|
||||
* files to produce an executable, this does not by itself cause the
|
||||
* resulting executable to be covered by the GNU General Public License.
|
||||
* Your use of that executable is in no way restricted on account of
|
||||
* linking the Harbour library code into it.
|
||||
*
|
||||
* This exception does not however invalidate any other reasons why
|
||||
* the executable file might be covered by the GNU General Public License.
|
||||
*
|
||||
* This exception applies only to the code released by the Harbour
|
||||
* Project under the name Harbour. If you copy code from other
|
||||
* Harbour Project or Free Software Foundation releases into a copy of
|
||||
* Harbour, as the General Public License permits, the exception does
|
||||
* not apply to the code that you add in this way. To avoid misleading
|
||||
* anyone as to the status of such modified files, you must delete
|
||||
* this exception notice from them.
|
||||
*
|
||||
* If you write modifications of your own for Harbour, it is your choice
|
||||
* whether to permit this exception to apply to your modifications.
|
||||
* If you do not wish that, delete this exception notice.
|
||||
*
|
||||
*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
/*
|
||||
* EkOnkar
|
||||
* ( The LORD is ONE )
|
||||
*
|
||||
* Harbour CUI Editor Source
|
||||
*
|
||||
* Pritpal Bedi
|
||||
* 13Aug2011
|
||||
*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#include "hbcuied.ch"
|
||||
#include "common.ch"
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#define FLD_UNIQUE 1 // N 4
|
||||
|
||||
#define FLD_ALIAS 2 // C 8
|
||||
#define FLD_HEADING 3 // C 15
|
||||
#define FLD_TYPE 4 // C 1
|
||||
#define FLD_LEN 5 // N 3
|
||||
#define FLD_DEC 6 // N 3
|
||||
#define FLD_ORD_NAT 7 // N 3
|
||||
#define FLD_FLD_NO 8 // N 3
|
||||
|
||||
#define FLD_INDEXED 9 // L 1
|
||||
#define FLD_INDEX_NO 10 // N 3
|
||||
|
||||
#define FLD_CONFIGURE 11 // L 1
|
||||
#define FLD_CALCULATED 12 // L 1
|
||||
#define FLD_TRIGGER 13 // L 1
|
||||
|
||||
#define FLD_ORD_GET 14 // N 3
|
||||
#define FLD_EDITABLE 15 // L 1
|
||||
#define FLD_DATA 16 // C 60
|
||||
#define FLD_WHEN 17 // C 100
|
||||
#define FLD_VALID 18 // C 100
|
||||
|
||||
#define FLD_ORD_BRW 19 // N 3
|
||||
#define FLD_BROWSE 20 // L 1
|
||||
#define FLD_BRW_INIT 21 // L 1
|
||||
#define FLD_BRW_VIS 22 // L 1
|
||||
|
||||
#define FLD_HELP 23 // C 8
|
||||
#define FLD_PG_TOTAL 24 // L 1
|
||||
|
||||
#define FLD_F_FLD 25 // N 3
|
||||
#define FLD_F_ALIAS 26 // C 8
|
||||
#define FLD_F_LOOK_FLD 27 // N 3
|
||||
#define FLD_F_RTN_FLD 28 // N 3
|
||||
|
||||
#define FLD_ENCRYPTED 29 // L 1
|
||||
#define FLD_ENK_BASE 30 // N 3
|
||||
#define FLD_ENK_ALOG 31 // N 3
|
||||
#define FLD_FLD_ATTR 32 // N 2
|
||||
// ---
|
||||
// 352
|
||||
#define FLD_INIT_VRBLS 32
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#define FLD_LEN_UNIQUE 4
|
||||
|
||||
#define FLD_LEN_ALIAS 8
|
||||
#define FLD_LEN_HEADING 15
|
||||
#define FLD_LEN_TYPE 1
|
||||
#define FLD_LEN_LEN 3
|
||||
#define FLD_LEN_DEC 2
|
||||
#define FLD_LEN_ORD_NAT 3
|
||||
#define FLD_LEN_FLD_NO 3
|
||||
|
||||
#define FLD_LEN_INDEXED 1
|
||||
#define FLD_LEN_INDEX_NO 3
|
||||
|
||||
#define FLD_LEN_CONFIGURE 1
|
||||
#define FLD_LEN_CALCULATED 1
|
||||
#define FLD_LEN_TRIGGER 1
|
||||
|
||||
#define FLD_LEN_ORD_GET 3
|
||||
#define FLD_LEN_EDITABLE 1
|
||||
#define FLD_LEN_DATA 60
|
||||
#define FLD_LEN_WHEN 100
|
||||
#define FLD_LEN_VALID 100
|
||||
|
||||
#define FLD_LEN_ORD_BRW 3
|
||||
#define FLD_LEN_BROWSE 1
|
||||
#define FLD_LEN_BRW_INIT 1
|
||||
#define FLD_LEN_BRW_VIS 1
|
||||
|
||||
#define FLD_LEN_HELP 8
|
||||
#define FLD_LEN_PG_TOTAL 1
|
||||
|
||||
#define FLD_LEN_F_FLD 3
|
||||
#define FLD_LEN_F_ALIAS 8
|
||||
#define FLD_LEN_F_LOOK_FLD 3
|
||||
#define FLD_LEN_F_RTN_FLD 3
|
||||
|
||||
#define FLD_LEN_ENCRYPTED 1
|
||||
#define FLD_LEN_ENK_BASE 3
|
||||
#define FLD_LEN_ENK_ALOG 3
|
||||
|
||||
#define FLD_LEN_FLD_ATTR 2
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#define FLD_OS_UNIQUE 1 // 4
|
||||
|
||||
#define FLD_OS_ALIAS 5 // 8
|
||||
#define FLD_OS_HEADING 13 // 15
|
||||
#define FLD_OS_TYPE 28 // 1
|
||||
#define FLD_OS_LEN 29 // 3
|
||||
#define FLD_OS_DEC 32 // 2
|
||||
#define FLD_OS_ORD_NAT 34 // 3
|
||||
#define FLD_OS_FLD_NO 37 // 3
|
||||
|
||||
#define FLD_OS_INDEXED 40 // 1
|
||||
#define FLD_OS_INDEX_NO 41 // 3
|
||||
|
||||
#define FLD_OS_CONFIGURE 44 // 1
|
||||
#define FLD_OS_CALCULATED 45 // 1
|
||||
#define FLD_OS_TRIGGER 46 // 1
|
||||
|
||||
#define FLD_OS_ORD_GET 47 // 3
|
||||
#define FLD_OS_EDITABLE 50 // 1
|
||||
#define FLD_OS_DATA 51 // 60
|
||||
#define FLD_OS_WHEN 111 //-----100
|
||||
#define FLD_OS_VALID 211 //-----100
|
||||
|
||||
#define FLD_OS_ORD_BRW 311 // 3
|
||||
#define FLD_OS_BROWSE 314 // 1
|
||||
#define FLD_OS_BRW_INIT 315 // 1
|
||||
#define FLD_OS_BRW_VIS 316 // 1
|
||||
|
||||
#define FLD_OS_HELP 317 // 8
|
||||
#define FLD_OS_PG_TOTAL 325 // 1
|
||||
|
||||
#define FLD_OS_F_FLD 326 // 3
|
||||
#define FLD_OS_F_ALIAS 329 // 8
|
||||
#define FLD_OS_F_LOOK_FLD 337 // 3
|
||||
#define FLD_OS_F_RTN_FLD 340 // 3
|
||||
|
||||
#define FLD_OS_ENCRYPTED 343 // 1
|
||||
#define FLD_OS_ENK_BASE 344 // 3
|
||||
#define FLD_OS_ENK_ALOG 347 // 3
|
||||
#define FLD_OS_FLD_ATTR 350 // 2
|
||||
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#define PRM_TYPE 1 // C 1
|
||||
#define PRM_ALIAS 2 // C 8
|
||||
#define PRM_DESC 3 // C 35
|
||||
#define PRM_FILE_1 4 // C 8
|
||||
#define PRM_FILE_2 5 // C 8
|
||||
#define PRM_FILE_3 6 // C 8
|
||||
#define PRM_PK 7 // N 3
|
||||
#define PRM_DK 8 // N 3
|
||||
#define PRM_PROTO 9 // N 2
|
||||
#define PRM_PATH 10 // C 80
|
||||
#define PRM_DELETE 11 // C 80
|
||||
#define PRM_PREVALIDATE 12 // C 80
|
||||
#define PRM_INITIALIZE 13 // C 80
|
||||
#define PRM_ATTACHED 14 // L 1
|
||||
#define PRM_MODE 15 // C 1
|
||||
#define PRM_SHORT 16 // C 3
|
||||
|
||||
#define PRM_INIT_VRBLS 16
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#define PRM_LEN_TYPE 1
|
||||
#define PRM_LEN_ALIAS 8 // C 8
|
||||
#define PRM_LEN_DESC 35 // C 35
|
||||
#define PRM_LEN_FILE_1 8 // C 8
|
||||
#define PRM_LEN_FILE_2 8 // C 8
|
||||
#define PRM_LEN_FILE_3 8 // C 8
|
||||
#define PRM_LEN_PK 3 // N 3
|
||||
#define PRM_LEN_DK 3 // N 3
|
||||
#define PRM_LEN_PROTO 2 // N 2
|
||||
#define PRM_LEN_PATH 80 // C 80
|
||||
#define PRM_LEN_DELETE 80 // C 80
|
||||
#define PRM_LEN_PREVALIDATE 80 // C 80
|
||||
#define PRM_LEN_INITIALIZE 80 // C 80
|
||||
#define PRM_LEN_ATTACHED 1 // L 1
|
||||
#define PRM_LEN_MODE 1 // C 1
|
||||
#define PRM_LEN_SHORT 3 // C 3
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#define PRM_OS_TYPE 1 // C 1
|
||||
#define PRM_OS_ALIAS 2 // C 8
|
||||
#define PRM_OS_DESC 10 // C 35
|
||||
#define PRM_OS_FILE_1 45 // C 8
|
||||
#define PRM_OS_FILE_2 53 // C 8
|
||||
#define PRM_OS_FILE_3 61 // C 8
|
||||
#define PRM_OS_PK 69 // N 3
|
||||
#define PRM_OS_DK 72 // N 3
|
||||
#define PRM_OS_PROTO 75 // N 2
|
||||
#define PRM_OS_PATH 77 // C 80
|
||||
#define PRM_OS_DELETE 157 // C 80
|
||||
#define PRM_OS_PREVALIDATE 237 // C 80
|
||||
#define PRM_OS_INITIALIZE 317 // C 80
|
||||
#define PRM_OS_ATTACHED 397 // L 1
|
||||
#define PRM_OS_MODE 398 // C 1
|
||||
#define PRM_OS_SHORT 399 // C 3
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
#define FATR_CHR 1
|
||||
#define FATR_DTE 2
|
||||
#define FATR_NUM 3
|
||||
#define FATR_LOG 4
|
||||
#define FATR_PKS 5
|
||||
#define FATR_PKM 6
|
||||
#define FATR_DTF 7
|
||||
#define FATR_FRN 8
|
||||
#define FATR_INF 9
|
||||
#define FATR_SUM 10
|
||||
#define FATR_TRG 11
|
||||
#define FATR_REF 12
|
||||
#define FATR_OPN 13
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrMdlFld( obj_, scn_, nObj )
|
||||
LOCAL v_, n, sel_
|
||||
|
||||
sel_:= scrVvSelAble( scn_ )
|
||||
v_ := IF( nObj > 0, scrObj2Vv( obj_[ nObj ] ), scrVvBlank() )
|
||||
n := v_[ VV_FIELD ]
|
||||
IF nObj == 0
|
||||
v_[ VV_FIELD ] := 0
|
||||
v_[ VV_ID ] := space( 10 )
|
||||
v_[ VV_F_PIC ] := space( 15 )
|
||||
v_[ VV_COLOR ] := 'N/W '
|
||||
ENDIF
|
||||
|
||||
IF .T.
|
||||
v_[ VV_EQN ] := 'fieldget('+ ltrim( str( n ) ) + ')'
|
||||
|
||||
sel_[ VV_ALIGN ] := .f.
|
||||
sel_[ VV_PRN_LEN ] := .f.
|
||||
// sel_[ VV_ID ] := .f.
|
||||
sel_[ VV_PRN_LEN ] := .f.
|
||||
sel_[ VV_ALIGN ] := .f.
|
||||
sel_[ VV_COLOR ] := .f.
|
||||
sel_[ VV_POINT ] := .f.
|
||||
sel_[ VV_COL_JUST ] := .f.
|
||||
sel_[ VV_PATTERN ] := .f.
|
||||
sel_[ VV_F_TYPE ] := .T.
|
||||
|
||||
scrField( nObj, 1, obj_, scn_, v_, sel_, OBJ_CLR_FIELD )
|
||||
IF nObj > 0
|
||||
scrOrdObj( obj_ )
|
||||
ENDIF
|
||||
ENDIF
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION scrFldUnique(obj_)
|
||||
LOCAL nUnq := 2001
|
||||
DO WHILE .t.
|
||||
IF ascan(obj_,{|e_| e_[OBJ_OBJ_UNIQUE] == nUnq }) == 0
|
||||
EXIT
|
||||
ENDIF
|
||||
nUnq++
|
||||
ENDDO
|
||||
RETURN nUnq
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
#IF 0
|
||||
STATIC FUNCTION prpObj2Fld( obj_ ) // Akin TO Blank
|
||||
|
||||
LOCAL v_:= array( FLD_INIT_VRBLS )
|
||||
LOCAL idx_:={ .f.,.f.,.f.,.f.,.t.,.t.,.t.,.t.,.f.,.f.,.f.,.f.,.f. }
|
||||
LOCAL nAttr := obj_[ OBJ_MDL_F_TYPE ]
|
||||
|
||||
v_[FLD_UNIQUE ] := obj_[OBJ_OBJ_UNIQUE]
|
||||
v_[FLD_ALIAS ] := space(8)
|
||||
v_[FLD_HEADING ] := obj_[OBJ_ID]
|
||||
v_[FLD_TYPE ] := obj_[OBJ_F_TYPE]
|
||||
v_[FLD_LEN ] := obj_[OBJ_F_LEN]
|
||||
v_[FLD_DEC ] := obj_[OBJ_F_DEC]
|
||||
v_[FLD_ORD_NAT ] := 0
|
||||
v_[FLD_FLD_NO ] := 0
|
||||
v_[FLD_INDEXED ] := idx_[nAttr]
|
||||
v_[FLD_INDEX_NO ] := 0
|
||||
v_[FLD_CONFIGURE ] := VouchInArray(nAttr,{FATR_NUM,FATR_LOG,FATR_CHR,;
|
||||
FATR_DTE,FATR_REF,FATR_TRG,FATR_INF})
|
||||
v_[FLD_CALCULATED ] := VouchInArray(nAttr,{FATR_NUM,FATR_LOG,FATR_CHR,;
|
||||
FATR_DTE,FATR_INF})
|
||||
v_[FLD_TRIGGER ] := nAttr == FATR_TRG .OR. nAttr == FATR_REF
|
||||
v_[FLD_ORD_GET ] := 0
|
||||
v_[FLD_EDITABLE ] := !VouchInArray(nAttr,{FATR_PKS,FATR_PKM})
|
||||
v_[FLD_DATA ] := space(FLD_LEN_DATA)
|
||||
v_[FLD_WHEN ] := space(FLD_LEN_WHEN)
|
||||
v_[FLD_VALID ] := space(FLD_LEN_VALID)
|
||||
v_[FLD_ORD_BRW ] := 0
|
||||
v_[FLD_BROWSE ] := nAttr <> FATR_TRG .OR. nAttr <> FATR_REF
|
||||
v_[FLD_BRW_INIT ] := nAttr <> FATR_TRG .OR. nAttr <> FATR_REF
|
||||
v_[FLD_BRW_VIS ] := nAttr <> FATR_TRG .OR. nAttr <> FATR_REF
|
||||
v_[FLD_HELP ] := space(8)
|
||||
v_[FLD_PG_TOTAL ] := obj_[OBJ_F_TYPE]=='N'
|
||||
v_[FLD_F_FLD ] := 0
|
||||
v_[FLD_F_ALIAS ] := space(8)
|
||||
v_[FLD_F_LOOK_FLD ] := 0
|
||||
v_[FLD_F_RTN_FLD ] := 0
|
||||
v_[FLD_ENCRYPTED ] := .t.
|
||||
v_[FLD_ENK_BASE ] := b_rand(254)
|
||||
v_[FLD_ENK_ALOG ] := b_rand(19)
|
||||
v_[FLD_FLD_ATTR ] := nAttr
|
||||
RETURN v_
|
||||
#ENDIF
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION prpFld2Str(v_)
|
||||
LOCAL s := ;
|
||||
str(v_[FLD_UNIQUE ], FLD_LEN_UNIQUE )+ ;
|
||||
pad(v_[FLD_ALIAS ], FLD_LEN_ALIAS )+ ;
|
||||
pad(v_[FLD_HEADING ], FLD_LEN_HEADING )+ ;
|
||||
pad(v_[FLD_TYPE ], FLD_LEN_TYPE )+ ;
|
||||
str(v_[FLD_LEN ], FLD_LEN_LEN )+ ;
|
||||
str(v_[FLD_DEC ], FLD_LEN_DEC )+ ;
|
||||
str(v_[FLD_ORD_NAT ], FLD_LEN_ORD_NAT )+ ;
|
||||
str(v_[FLD_FLD_NO ], FLD_LEN_FLD_NO )+ ;
|
||||
IF(v_[FLD_INDEXED ], 'T', 'F' )+ ;
|
||||
str(v_[FLD_INDEX_NO ], FLD_LEN_INDEX_NO )+ ;
|
||||
IF(v_[FLD_CONFIGURE ], 'T', 'F' )+ ;
|
||||
IF(v_[FLD_CALCULATED ], 'T', 'F' )+ ;
|
||||
IF(v_[FLD_TRIGGER ], 'T', 'F' )+ ;
|
||||
str(v_[FLD_ORD_GET ], FLD_LEN_ORD_GET )+ ;
|
||||
IF(v_[FLD_EDITABLE ], 'T', 'F' )+ ;
|
||||
pad(v_[FLD_DATA ], FLD_LEN_DATA )+ ;
|
||||
pad(v_[FLD_WHEN ], FLD_LEN_WHEN )+ ;
|
||||
pad(v_[FLD_VALID ], FLD_LEN_VALID )+ ;
|
||||
str(v_[FLD_ORD_BRW ], FLD_LEN_ORD_BRW )+ ;
|
||||
IF(v_[FLD_BROWSE ], 'T', 'F' )+ ;
|
||||
IF(v_[FLD_BRW_INIT ], 'T', 'F' )+ ;
|
||||
IF(v_[FLD_BRW_VIS ], 'T', 'F' )+ ;
|
||||
pad(v_[FLD_HELP ], FLD_LEN_HELP )+ ;
|
||||
IF(v_[FLD_PG_TOTAL ], 'T', 'F' )+ ;
|
||||
str(v_[FLD_F_FLD ], FLD_LEN_F_FLD )+ ;
|
||||
pad(v_[FLD_F_ALIAS ], FLD_LEN_F_ALIAS )+ ;
|
||||
str(v_[FLD_F_LOOK_FLD ], FLD_LEN_F_LOOK_FLD )+ ;
|
||||
str(v_[FLD_F_RTN_FLD ], FLD_LEN_F_RTN_FLD )+ ;
|
||||
IF(v_[FLD_ENCRYPTED ], 'T', 'F' )+ ;
|
||||
str(v_[FLD_ENK_BASE ], FLD_LEN_ENK_BASE )+ ;
|
||||
str(v_[FLD_ENK_ALOG ], FLD_LEN_ENK_ALOG )+ ;
|
||||
str(v_[FLD_FLD_ATTR ], FLD_LEN_FLD_ATTR )
|
||||
RETURN s
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION prpStr2Fld(s)
|
||||
LOCAL v_:= array(FLD_INIT_VRBLS)
|
||||
|
||||
v_[FLD_UNIQUE ] := val(substr(s, FLD_OS_UNIQUE , FLD_LEN_UNIQUE ))
|
||||
v_[FLD_ALIAS ] := substr(s, FLD_OS_ALIAS , FLD_LEN_ALIAS )
|
||||
v_[FLD_HEADING ] := substr(s, FLD_OS_HEADING , FLD_LEN_HEADING )
|
||||
v_[FLD_TYPE ] := substr(s, FLD_OS_TYPE , FLD_LEN_TYPE )
|
||||
v_[FLD_LEN ] := val(substr(s, FLD_OS_LEN , FLD_LEN_LEN ))
|
||||
v_[FLD_DEC ] := val(substr(s, FLD_OS_DEC , FLD_LEN_DEC ))
|
||||
v_[FLD_ORD_NAT ] := val(substr(s, FLD_OS_ORD_NAT , FLD_LEN_ORD_NAT ))
|
||||
v_[FLD_FLD_NO ] := val(substr(s, FLD_OS_FLD_NO , FLD_LEN_FLD_NO ))
|
||||
v_[FLD_INDEXED ] := substr(s, FLD_OS_INDEXED , FLD_LEN_INDEXED )=='T'
|
||||
v_[FLD_INDEX_NO ] := val(substr(s, FLD_OS_INDEX_NO , FLD_LEN_INDEX_NO ))
|
||||
v_[FLD_CONFIGURE ] := substr(s, FLD_OS_CONFIGURE , FLD_LEN_CONFIGURE )=='T'
|
||||
v_[FLD_CALCULATED ] := substr(s, FLD_OS_CALCULATED , FLD_LEN_CALCULATED)=='T'
|
||||
v_[FLD_TRIGGER ] := substr(s, FLD_OS_TRIGGER , FLD_LEN_TRIGGER )=='T'
|
||||
v_[FLD_ORD_GET ] := val(substr(s, FLD_OS_ORD_GET , FLD_LEN_ORD_GET ))
|
||||
v_[FLD_EDITABLE ] := substr(s, FLD_OS_EDITABLE , FLD_LEN_EDITABLE )=='T'
|
||||
v_[FLD_DATA ] := substr(s, FLD_OS_DATA , FLD_LEN_DATA )
|
||||
v_[FLD_WHEN ] := substr(s, FLD_OS_WHEN , FLD_LEN_WHEN )
|
||||
v_[FLD_VALID ] := substr(s, FLD_OS_VALID , FLD_LEN_VALID )
|
||||
v_[FLD_ORD_BRW ] := val(substr(s, FLD_OS_ORD_BRW , FLD_LEN_ORD_BRW ))
|
||||
v_[FLD_BROWSE ] := substr(s, FLD_OS_BROWSE , FLD_LEN_BROWSE )=='T'
|
||||
v_[FLD_BRW_INIT ] := substr(s, FLD_OS_BRW_INIT , FLD_LEN_BRW_INIT )=='T'
|
||||
v_[FLD_BRW_VIS ] := substr(s, FLD_OS_BRW_VIS , FLD_LEN_BRW_VIS )=='T'
|
||||
v_[FLD_HELP ] := substr(s, FLD_OS_HELP , FLD_LEN_HELP )
|
||||
v_[FLD_PG_TOTAL ] := substr(s, FLD_OS_PG_TOTAL , FLD_LEN_PG_TOTAL )=='T'
|
||||
v_[FLD_F_FLD ] := val(substr(s, FLD_OS_F_FLD , FLD_LEN_F_FLD ))
|
||||
v_[FLD_F_ALIAS ] := substr(s, FLD_OS_F_ALIAS , FLD_LEN_F_ALIAS )
|
||||
v_[FLD_F_LOOK_FLD ] := val(substr(s, FLD_OS_F_LOOK_FLD , FLD_LEN_F_LOOK_FLD))
|
||||
v_[FLD_F_RTN_FLD ] := val(substr(s, FLD_OS_F_RTN_FLD , FLD_LEN_F_RTN_FLD ))
|
||||
v_[FLD_ENCRYPTED ] := substr(s, FLD_OS_ENCRYPTED , FLD_LEN_ENCRYPTED )=='T'
|
||||
v_[FLD_ENK_BASE ] := val(substr(s, FLD_OS_ENK_BASE , FLD_LEN_ENK_BASE ))
|
||||
v_[FLD_ENK_ALOG ] := val(substr(s, FLD_OS_ENK_ALOG , FLD_LEN_ENK_ALOG ))
|
||||
v_[FLD_FLD_ATTR ] := val(substr(s, FLD_OS_FLD_ATTR , FLD_LEN_FLD_ATTR ))
|
||||
|
||||
RETURN v_
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION prpMdlBlank()
|
||||
LOCAL v_:= array(PRM_INIT_VRBLS)
|
||||
|
||||
v_[PRM_TYPE ] := 'S'
|
||||
v_[PRM_ALIAS ] := 'Z7_NEW '
|
||||
v_[PRM_DESC ] := 'The NEXT Module '
|
||||
v_[PRM_FILE_1 ] := 'Z7A00001'
|
||||
v_[PRM_FILE_2 ] := 'Z7B00002'
|
||||
v_[PRM_FILE_3 ] := 'Z7_NEW '
|
||||
v_[PRM_PK ] := 1
|
||||
v_[PRM_DK ] := 2
|
||||
v_[PRM_PROTO ] := 0
|
||||
v_[PRM_PATH ] := space(PRM_LEN_PATH)
|
||||
v_[PRM_DELETE ] := space(PRM_LEN_DELETE)
|
||||
v_[PRM_PREVALIDATE] := space(PRM_LEN_PREVALIDATE)
|
||||
v_[PRM_INITIALIZE ] := space(PRM_LEN_INITIALIZE)
|
||||
v_[PRM_ATTACHED ] := .f.
|
||||
v_[PRM_MODE ] := 'V'
|
||||
v_[PRM_SHORT ] := 'XXX'
|
||||
|
||||
RETURN v_
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION prpMdl2Str(v_)
|
||||
LOCAL s := ;
|
||||
pad(v_[PRM_TYPE ], PRM_LEN_TYPE ) +;
|
||||
pad(v_[PRM_ALIAS ], PRM_LEN_ALIAS ) +;
|
||||
pad(v_[PRM_DESC ], PRM_LEN_DESC ) +;
|
||||
pad(v_[PRM_FILE_1 ], PRM_LEN_FILE_1 ) +;
|
||||
pad(v_[PRM_FILE_2 ], PRM_LEN_FILE_2 ) +;
|
||||
pad(v_[PRM_FILE_3 ], PRM_LEN_FILE_3 ) +;
|
||||
str(v_[PRM_PK ], PRM_LEN_PK ) +;
|
||||
str(v_[PRM_DK ], PRM_LEN_DK ) +;
|
||||
str(v_[PRM_PROTO ], PRM_LEN_PROTO ) +;
|
||||
pad(v_[PRM_PATH ], PRM_LEN_PATH ) +;
|
||||
pad(v_[PRM_DELETE ], PRM_LEN_DELETE ) +;
|
||||
pad(v_[PRM_PREVALIDATE], PRM_LEN_PREVALIDATE) +;
|
||||
pad(v_[PRM_INITIALIZE ], PRM_LEN_INITIALIZE ) +;
|
||||
IF(v_[PRM_ATTACHED ],'T','F') +;
|
||||
pad(v_[PRM_MODE ], PRM_LEN_MODE ) +;
|
||||
pad(v_[PRM_SHORT ], PRM_LEN_SHORT )
|
||||
RETURN s
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION prpStr2Mdl(s)
|
||||
LOCAL v_:= array(PRM_INIT_VRBLS)
|
||||
|
||||
v_[PRM_TYPE ] := substr(s, PRM_OS_TYPE , PRM_LEN_TYPE )
|
||||
v_[PRM_ALIAS ] := substr(s, PRM_OS_ALIAS , PRM_LEN_ALIAS )
|
||||
v_[PRM_DESC ] := substr(s, PRM_OS_DESC , PRM_LEN_DESC )
|
||||
v_[PRM_FILE_1 ] := substr(s, PRM_OS_FILE_1 , PRM_LEN_FILE_1 )
|
||||
v_[PRM_FILE_2 ] := substr(s, PRM_OS_FILE_2 , PRM_LEN_FILE_2 )
|
||||
v_[PRM_FILE_3 ] := substr(s, PRM_OS_FILE_3 , PRM_LEN_FILE_3 )
|
||||
v_[PRM_PK ] := val(substr(s, PRM_OS_PK , PRM_LEN_PK ))
|
||||
v_[PRM_DK ] := val(substr(s, PRM_OS_DK , PRM_LEN_DK ))
|
||||
v_[PRM_PROTO ] := val(substr(s, PRM_OS_PROTO , PRM_LEN_PROTO ))
|
||||
v_[PRM_PATH ] := substr(s, PRM_OS_PATH , PRM_LEN_PATH )
|
||||
v_[PRM_DELETE ] := substr(s, PRM_OS_DELETE , PRM_LEN_DELETE )
|
||||
v_[PRM_PREVALIDATE] := substr(s, PRM_OS_PREVALIDATE, PRM_LEN_PREVALIDATE)
|
||||
v_[PRM_INITIALIZE ] := substr(s, PRM_OS_INITIALIZE , PRM_LEN_INITIALIZE )
|
||||
v_[PRM_ATTACHED ] := substr(s, PRM_OS_ATTACHED , PRM_LEN_ATTACHED ) == 'T'
|
||||
v_[PRM_MODE ] := substr(s, PRM_OS_MODE , PRM_LEN_MODE )
|
||||
v_[PRM_SHORT ] := substr(s, PRM_OS_SHORT , PRM_LEN_SHORT )
|
||||
|
||||
RETURN v_
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -119,60 +119,34 @@ STATIC FUNCTION rptInit()
|
||||
|
||||
//---------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION s2sct(s)
|
||||
LOCAL sct_:= array( SCT_INIT_VRBLS )
|
||||
|
||||
sct_[SCT_ORDER] := val(substr(s,SCT_OS_ORDER,SCT_LEN_ORDER))
|
||||
sct_[SCT_ID ] := substr(s,SCT_OS_ID ,SCT_LEN_ID )
|
||||
sct_[SCT_SAY ] := substr(s,SCT_OS_SAY ,SCT_LEN_SAY )
|
||||
sct_[SCT_ROWS ] := val(substr(s,SCT_OS_ROWS ,SCT_LEN_ROWS ))
|
||||
sct_[SCT_COLOR] := substr(s,SCT_OS_COLOR,SCT_LEN_COLOR)
|
||||
sct_[SCT_EQN ] := substr(s,SCT_OS_EQN ,SCT_LEN_EQN )
|
||||
sct_[SCT_EJECT] := substr(s,SCT_OS_EJECT,SCT_LEN_EJECT) == 'T'
|
||||
sct_[SCT_RESET] := substr(s,SCT_OS_RESET,SCT_LEN_RESET) == 'T'
|
||||
|
||||
RETURN sct_
|
||||
|
||||
//---------------------------------------------------------------------//
|
||||
|
||||
STATIC FUNCTION sct2s(sct_)
|
||||
LOCAL s := ;
|
||||
str(sct_[SCT_ORDER],SCT_LEN_ORDER) + ;
|
||||
pad(sct_[SCT_ID ],SCT_LEN_ID ) + ;
|
||||
pad(sct_[SCT_SAY ],SCT_LEN_SAY ) + ;
|
||||
str(sct_[SCT_ROWS ],SCT_LEN_ROWS ) + ;
|
||||
pad(sct_[SCT_COLOR],SCT_LEN_COLOR) + ;
|
||||
pad(sct_[SCT_EQN ],SCT_LEN_EQN ) + ;
|
||||
IF(sct_[SCT_EJECT],'T','F' ) + ;
|
||||
IF(sct_[SCT_RESET],'T','F' )
|
||||
RETURN s
|
||||
|
||||
//---------------------------------------------------------------------//
|
||||
|
||||
FUNCTION rpt2ObjScn( cObject,rpt_,nMode,struct_,cRpt,nWhere,lMsg )
|
||||
LOCAL obj_,scn_:={}
|
||||
LOCAL i, n
|
||||
LOCAL n
|
||||
|
||||
HB_SYMBOL_UNUSED( struct_ )
|
||||
|
||||
rpt_:= iif(rpt_ == NIL .OR. empty(rpt_), rptInit(), rpt_)
|
||||
rpt_:= iif( rpt_ == NIL .OR. empty( rpt_ ), rptInit(), rpt_ )
|
||||
obj_:= scrScn2obj(rpt_,0)
|
||||
|
||||
DO CASE
|
||||
|
||||
CASE nMode == REP_FOR_MDL
|
||||
scn_:= scrConfig(obj_,DGN_MODULE)
|
||||
IF (n := ascan(rpt_,{|e_| e_[2]==1 })) > 0
|
||||
scn_[SCN_PROPERTY] := eval(COMPILE(rpt_[n,3]))
|
||||
scn_:= scrConfig( obj_,DGN_MODULE )
|
||||
IF (n := ascan( rpt_, {|e_| e_[2]==1 } ) ) > 0
|
||||
scn_[ SCN_PROPERTY ] := eval( COMPILE( rpt_[ n,3 ] ) )
|
||||
ENDIF
|
||||
#if 0
|
||||
IF (n := ascan(rpt_,{|e_| e_[2]== 51 })) > 0 // Property
|
||||
scn_[SCN_PROPERTY] := prpStr2Mdl(rpt_[n,3])
|
||||
scn_[ SCN_PROPERTY ] := prpStr2Mdl( rpt_[ n,3 ] )
|
||||
ENDIF
|
||||
FOR i := 1 TO len(rpt_) // Fields
|
||||
IF VouchInRange(rpt_[i,2],2001,3000)
|
||||
aadd(scn_[SCN_FIELDS], prpStr2Fld(rpt_[i,3]))
|
||||
#endif
|
||||
#if 0
|
||||
FOR i := 1 TO len( rpt_ ) // Fields
|
||||
IF VouchInRange( rpt_[i,2], 2001,3000 )
|
||||
aadd( scn_[ SCN_FIELDS ], prpStr2Fld( rpt_[ i,3 ] ) )
|
||||
ENDIF
|
||||
NEXT
|
||||
#endif
|
||||
|
||||
ENDCASE
|
||||
|
||||
@@ -188,20 +162,26 @@ FUNCTION rpt2ObjScn( cObject,rpt_,nMode,struct_,cRpt,nWhere,lMsg )
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION objScn2Rpt(obj_,scn_,nMode)
|
||||
LOCAL rpt_:={}, i //, s
|
||||
FUNCTION objScn2Rpt( obj_, scn_, nMode )
|
||||
LOCAL rpt_:={}
|
||||
|
||||
HB_SYMBOL_UNUSED( scn_ )
|
||||
|
||||
DO CASE
|
||||
CASE nMode == REP_FOR_MDL
|
||||
aeval(obj_,{|e_| iif(e_[OBJ_ROW]==0,'',aadd(rpt_,{'',0,scrObj2str(e_)} )) })
|
||||
IF !empty(scn_[SCN_PROPERTY])
|
||||
aadd(rpt_, {'',51,prpMdl2Str(scn_[SCN_PROPERTY]) })
|
||||
aeval( obj_, {|e_| iif( e_[ OBJ_ROW ] == 0, '', aadd( rpt_, { '', 0, scrObj2str( e_ ) } ) ) } )
|
||||
#if 0
|
||||
IF ! empty( scn_[ SCN_PROPERTY ] )
|
||||
aadd(rpt_, { '', 51, prpMdl2Str( scn_[ SCN_PROPERTY ] ) } )
|
||||
ENDIF
|
||||
#endif
|
||||
#if 0
|
||||
IF !empty(scn_[SCN_FIELDS])
|
||||
FOR i := 1 TO len(scn_[SCN_FIELDS])
|
||||
aadd(rpt_,{'',scn_[SCN_FIELDS,i,1], prpFld2Str(scn_[SCN_FIELDS,i]) })
|
||||
NEXT
|
||||
ENDIF
|
||||
#endif
|
||||
ENDCASE
|
||||
|
||||
RETURN rpt_
|
||||
|
||||
1405
harbour/contrib/hbcuied/cu_object.prg
Normal file
1405
harbour/contrib/hbcuied/cu_object.prg
Normal file
File diff suppressed because it is too large
Load Diff
@@ -71,25 +71,6 @@
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
#define K_WVT_FULLSCREEN 299701
|
||||
|
||||
#define K_WVT_BITMAP 299705
|
||||
#define K_WVT_FRAME 299706
|
||||
#define K_WVT_ELLIPSE 299707
|
||||
#define K_WVT_LINE_H 299708
|
||||
#define K_WVT_LINE_V 299709
|
||||
#define K_WVT_GRID 299710
|
||||
#define K_WVT_BARCODE 299711
|
||||
#define K_WVT_TEXTBOX 299712
|
||||
|
||||
#define K_WVT_CARRY 299721
|
||||
#define K_WVT_BROUGHT 299722
|
||||
#define K_WVT_SUMMARY 299723
|
||||
#define K_WVT_GROUP 299724
|
||||
#define K_WVT_MATRIX 299725
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION ScrDisplay( scn_ )
|
||||
|
||||
dispbegin()
|
||||
@@ -120,12 +101,12 @@ FUNCTION scrStatus(obj_,scn_)
|
||||
|
||||
s += pad(scn_[SCN_FILE],12)+;
|
||||
' ³ '+;
|
||||
' Row:'+;
|
||||
' R:'+;
|
||||
str( scn_[SCN_ROW_REP]-1, 3 )+;
|
||||
' Col:'+;
|
||||
' C:'+;
|
||||
str( scn_[SCN_COL_REP]-1, 3 )+;
|
||||
' ³ ' +;
|
||||
IF(readInsert(),'Ins ',' ')+;
|
||||
iif(readInsert(),'Ins ',' ')+;
|
||||
' ³ '
|
||||
|
||||
objId := ''
|
||||
@@ -147,9 +128,6 @@ FUNCTION scrStatus(obj_,scn_)
|
||||
|
||||
IF ( nSct := scrSecOrd(scn_,scn_[SCN_ROW_REP])) <> NIL
|
||||
s += scn_[ SCN_SECTORS_,nSct,SCT_ID ]
|
||||
#ifdef __WVT__
|
||||
cClr := scn_[ SCN_SECTORS_,nSct,SCT_COLOR ]
|
||||
#ENDIF
|
||||
ENDIF
|
||||
|
||||
@ scn_[SCN_STATUS_ROW], scn_[SCN_STATUS_COL] ;
|
||||
@@ -159,8 +137,8 @@ FUNCTION scrStatus(obj_,scn_)
|
||||
/* Ruler */
|
||||
s := substr(scn_[SCN_RULER],;
|
||||
max( 1,scn_[SCN_COL_REP]-scn_[SCN_COL_CUR]+scn_[SCN_LEFT]),;
|
||||
scn_[ SCN_RIGHT]-scn_[SCN_LEFT]+1 )
|
||||
DispBox( scn_[SCN_TOP]-1,0,scn_[SCN_TOP]-1,maxcol(),' ',scn_[SCN_CLR_OVERALL] )
|
||||
scn_[ SCN_RIGHT ] - scn_[SCN_LEFT ] + 1 )
|
||||
DispBox( scn_[ SCN_TOP ] - 1, 0, scn_[ SCN_TOP ] - 1, maxcol(), ' ', scn_[ SCN_CLR_OVERALL ] )
|
||||
@ scn_[SCN_ROW_RULER],scn_[SCN_LEFT] SAY s COLOR scn_[SCN_CLR_RULER]
|
||||
@ scn_[SCN_ROW_RULER],scn_[SCN_COL_CUR] say ;
|
||||
substr( s, scn_[SCN_COL_CUR]-scn_[SCN_LEFT]+1,1) COLOR cClr
|
||||
@@ -178,7 +156,7 @@ FUNCTION scrStatus(obj_,scn_)
|
||||
|
||||
FUNCTION scrHiLite(obj_,scn_,mode)
|
||||
LOCAL nObj := scn_[SCN_OBJ_HILITE]
|
||||
LOCAL cColor := IF(mode,scn_[SCN_CLR_HILITE],obj_[nObj,OBJ_COLOR])
|
||||
LOCAL cColor := iif(mode,scn_[SCN_CLR_HILITE],obj_[nObj,OBJ_COLOR])
|
||||
|
||||
IF obj_[nObj,OBJ_TYPE] == OBJ_O_BOX
|
||||
DispBegin()
|
||||
@@ -201,17 +179,17 @@ FUNCTION scrHiLite(obj_,scn_,mode)
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrDispSelctd(obj_,scn_)
|
||||
FUNCTION scrDispSelctd( obj_,scn_ )
|
||||
LOCAL i,j,nCol,nRow
|
||||
|
||||
IF !empty(scn_[SCN_TEXT_BLOCK_])
|
||||
IF ! empty( scn_[ SCN_TEXT_BLOCK_ ] )
|
||||
DispBegin()
|
||||
|
||||
FOR i := scn_[SCN_TEXT_BLOCK_,1] TO scn_[SCN_TEXT_BLOCK_,3]
|
||||
IF (nRow := i+scn_[SCN_ROW_DIS]) <= scn_[SCN_BOTTOM]
|
||||
FOR j := scn_[SCN_TEXT_BLOCK_,2] TO scn_[SCN_TEXT_BLOCK_,4]
|
||||
IF (nCol := j+scn_[SCN_COL_DIS]) <= scn_[SCN_RIGHT]
|
||||
@ nRow,nCol SAY scrGetChar(obj_,i,j) COLOR 'GR+/R'
|
||||
FOR i := scn_[ SCN_TEXT_BLOCK_, 1 ] TO scn_[ SCN_TEXT_BLOCK_, 3 ]
|
||||
IF ( nRow := i + scn_[ SCN_ROW_DIS ] ) <= scn_[ SCN_BOTTOM ]
|
||||
FOR j := scn_[ SCN_TEXT_BLOCK_, 2 ] TO scn_[ SCN_TEXT_BLOCK_, 4 ]
|
||||
IF ( nCol := j + scn_[ SCN_COL_DIS ] ) <= scn_[ SCN_RIGHT ]
|
||||
@ nRow, nCol SAY scrGetChar( obj_, i, j ) COLOR 'GR+/R'
|
||||
ENDIF
|
||||
NEXT
|
||||
ENDIF
|
||||
@@ -223,17 +201,17 @@ FUNCTION scrDispSelctd(obj_,scn_)
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrDispGhost(obj_,scn_,gst_)
|
||||
FUNCTION scrDispGhost( obj_,scn_,gst_ )
|
||||
LOCAL i,j,nRow,nCol
|
||||
|
||||
HB_SYMBOL_UNUSED( obj_ )
|
||||
|
||||
DispBegin()
|
||||
FOR i := gst_[1] TO gst_[3]
|
||||
IF (nRow := i+scn_[SCN_ROW_DIS]) <= scn_[SCN_BOTTOM]
|
||||
FOR j := gst_[2] TO gst_[4]
|
||||
IF (nCol := j+scn_[SCN_COL_DIS]) <= scn_[SCN_RIGHT]
|
||||
@ nRow,nCol SAY THE_FILL COLOR 'GR+/R'
|
||||
FOR i := gst_[ 1 ] TO gst_[ 3 ]
|
||||
IF ( nRow := i + scn_[ SCN_ROW_DIS ] ) <= scn_[ SCN_BOTTOM ]
|
||||
FOR j := gst_[ 2 ] TO gst_[ 4 ]
|
||||
IF ( nCol := j + scn_[ SCN_COL_DIS ] ) <= scn_[ SCN_RIGHT ]
|
||||
@ nRow, nCol SAY THE_FILL COLOR 'GR+/R'
|
||||
ENDIF
|
||||
NEXT
|
||||
ENDIF
|
||||
@@ -244,40 +222,13 @@ FUNCTION scrDispGhost(obj_,scn_,gst_)
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrMove(obj_,scn_)
|
||||
LOCAL i,scrT,scrB,scrL,scrR,k,n,nRepOff,nRowWnd,nTo
|
||||
FUNCTION scrMove( obj_, scn_ )
|
||||
LOCAL i
|
||||
LOCAL crs := setCursor( 0 )
|
||||
LOCAL nOff, cText, nRow, nCol, cColor
|
||||
|
||||
dispBegin()
|
||||
|
||||
IF scn_[SCN_DESIGN] == DGN_MODULE .OR. scn_[SCN_DESIGN]==DGN_SCREEN
|
||||
scrT := VouchWndSave(0,0,scn_[SCN_TOP]-1,maxcol())
|
||||
scrB := VouchWndSave(scn_[SCN_BOTTOM]+1,0,maxrow(),maxcol())
|
||||
scrL := VouchWndSave(0,0,maxrow(),scn_[SCN_LEFT]-1)
|
||||
scrR := VouchWndSave(0,scn_[SCN_RIGHT]+1,maxrow(),maxcol())
|
||||
ELSE
|
||||
scrT := VouchWndSave(0,0,scn_[SCN_TOP]-2,maxcol())
|
||||
scrB := VouchWndSave(maxrow()-2,0,maxrow(),maxcol())
|
||||
DispBox( scn_[SCN_TOP],0,maxrow()-2,maxcol(),' ',scn_[SCN_CLR_OVERALL] )
|
||||
|
||||
nRowWnd := scn_[SCN_BOTTOM ] - scn_[SCN_TOP] + 1
|
||||
nRepOff := scn_[SCN_ROW_REP] - (scn_[SCN_ROW_CUR] - scn_[SCN_TOP])
|
||||
nTo := (nRowWnd + nRepOff - 1)
|
||||
|
||||
k := 0
|
||||
FOR i := nRepOff TO nTo
|
||||
IF ( n := scrSecOrd( scn_,i ) ) <> NIL
|
||||
@ scn_[ SCN_TOP ]+k, 0 SAY scn_[ SCN_SECTORS_, n, SCT_SAY ] ;
|
||||
COLOR scn_[ SCN_SECTORS_,n,SCT_COLOR ]
|
||||
k++
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
scrL := VouchWndSave(0,0,maxrow(),scn_[SCN_LEFT]-1)
|
||||
scrR := VouchWndSave(0,scn_[SCN_RIGHT]+1,maxrow()-2,maxcol())
|
||||
ENDIF
|
||||
|
||||
dispBox(scn_[ SCN_TOP ],;
|
||||
scn_[ SCN_LEFT ],;
|
||||
scn_[ SCN_BOTTOM ],;
|
||||
@@ -297,30 +248,33 @@ FUNCTION scrMove(obj_,scn_)
|
||||
nCol := 0
|
||||
ENDIF
|
||||
|
||||
IF obj_[i,OBJ_TYPE] == OBJ_O_BOX
|
||||
IF obj_[ i,OBJ_TYPE ] == OBJ_O_BOX
|
||||
cColor := iif( scn_[ SCN_OBJ_SELECTED ] == i, scn_[ SCN_CLR_SELECT ],;
|
||||
iif( scn_[ SCN_OBJ_HILITE ] == i, scn_[ SCN_CLR_HILITE ],;
|
||||
'W/B' /* obj_[i,OBJ_COLOR] */ ) )
|
||||
DO CASE
|
||||
CASE VouchInArray(obj_[ i,OBJ_MDL_F_TYPE ], { 61,62,63,67,68 } )
|
||||
CASE VouchInArray( obj_[ i,OBJ_MDL_F_TYPE ], { 61,62,63,67,68 } )
|
||||
dispBox( obj_[ i,OBJ_ROW ] + scn_[ SCN_ROW_DIS ],;
|
||||
obj_[ i,OBJ_COL ] + scn_[ SCN_COL_DIS ],;
|
||||
obj_[ i,OBJ_TO_ROW ] + scn_[ SCN_ROW_DIS ],;
|
||||
obj_[ i,OBJ_TO_COL ] + scn_[ SCN_COL_DIS ],;
|
||||
substr( obj_[ i,OBJ_BOX_SHAPE ], 1, 8 ),;
|
||||
IF( scn_[ SCN_OBJ_HILITE ] == i, scn_[ SCN_CLR_HILITE ],;
|
||||
'w/b' /* obj_[i,OBJ_COLOR] */))
|
||||
CASE VouchInArray(obj_[i,OBJ_MDL_F_TYPE], {64,65} ) // Line
|
||||
@ obj_[i,OBJ_ROW] + scn_[SCN_ROW_DIS],;
|
||||
obj_[i,OBJ_COL] + scn_[SCN_COL_DIS] ;
|
||||
TO obj_[i,OBJ_TO_ROW] + scn_[SCN_ROW_DIS],;
|
||||
obj_[i,OBJ_TO_COL] + scn_[SCN_COL_DIS] ;
|
||||
COLOR IF(scn_[SCN_OBJ_HILITE]==i,scn_[SCN_CLR_HILITE],;
|
||||
'w/b' /* obj_[i,OBJ_COLOR] */)
|
||||
cColor )
|
||||
|
||||
CASE VouchInArray( obj_[ i, OBJ_MDL_F_TYPE ], { 64,65 } ) // Line
|
||||
@ obj_[ i, OBJ_ROW ] + scn_[ SCN_ROW_DIS ],;
|
||||
obj_[ i, OBJ_COL ] + scn_[ SCN_COL_DIS ] ;
|
||||
TO obj_[ i, OBJ_TO_ROW ] + scn_[ SCN_ROW_DIS ],;
|
||||
obj_[ i, OBJ_TO_COL ] + scn_[ SCN_COL_DIS ] ;
|
||||
COLOR cColor
|
||||
|
||||
ENDCASE
|
||||
ENDIF
|
||||
|
||||
IF obj_[i,OBJ_TYPE] == OBJ_O_FIELD .OR. obj_[i,OBJ_TYPE] == OBJ_O_EXP
|
||||
IF obj_[i,OBJ_TYPE] == OBJ_O_FIELD
|
||||
cText := obj_[ i,OBJ_TEXT ]
|
||||
cColor := IF( scn_[ SCN_OBJ_SELECTED ] == i,scn_[ SCN_CLR_SELECT ],;
|
||||
IF( scn_[ SCN_OBJ_HILITE ] == i,scn_[ SCN_CLR_HILITE ],;
|
||||
cColor := iif( scn_[ SCN_OBJ_SELECTED ] == i,scn_[ SCN_CLR_SELECT ],;
|
||||
iif( scn_[ SCN_OBJ_HILITE ] == i,scn_[ SCN_CLR_HILITE ],;
|
||||
'W+/W' /* obj_[i,OBJ_COLOR] */ ))
|
||||
IF nOff < 0
|
||||
cText := substr( obj_[ i,OBJ_TEXT ], abs( nOff ) + 1 )
|
||||
@@ -330,8 +284,8 @@ FUNCTION scrMove(obj_,scn_)
|
||||
|
||||
IF obj_[i,OBJ_TYPE] == OBJ_O_TEXT
|
||||
cText := obj_[ i,OBJ_EQN ]
|
||||
cColor := IF( scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],;
|
||||
IF( empty(obj_[i,OBJ_COLOR]),scn_[SCN_CLR_TEXT],;
|
||||
cColor := iif( scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],;
|
||||
iif( empty(obj_[i,OBJ_COLOR]),scn_[SCN_CLR_TEXT],;
|
||||
'W/B' /* obj_[i,OBJ_COLOR] */))
|
||||
IF nOff < 0
|
||||
cText := substr( obj_[ i,OBJ_EQN ], abs( nOff ) + 1 )
|
||||
@@ -344,28 +298,15 @@ FUNCTION scrMove(obj_,scn_)
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
ScrDispSelctd( obj_,scn_ ) // Display Selected Screen
|
||||
|
||||
IF scn_[ SCN_TOP ] > 0
|
||||
VouchWndRest(scrT)
|
||||
ENDIF
|
||||
IF scn_[ SCN_LEFT ] > 0
|
||||
VouchWndRest(scrL)
|
||||
ENDIF
|
||||
IF scn_[ SCN_BOTTOM ] < maxrow()
|
||||
VouchWndRest(scrB)
|
||||
ENDIF
|
||||
IF scn_[ SCN_RIGHT ] < maxcol()
|
||||
VouchWndRest(scrR)
|
||||
ENDIF
|
||||
|
||||
ScrDispSelctd( obj_, scn_ )
|
||||
dispEnd()
|
||||
setcursor( crs )
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrMoveLine(obj_,scn_)
|
||||
FUNCTION scrMoveLine( obj_,scn_ )
|
||||
LOCAL scrL,scrR,i,crs, nRow, nCol, cText, nOff, cColor
|
||||
|
||||
crs := setCursor( 0 )
|
||||
@@ -388,9 +329,6 @@ FUNCTION scrMoveLine(obj_,scn_)
|
||||
nOff := obj_[i,OBJ_COL]+scn_[SCN_COL_DIS]
|
||||
nRow := obj_[i,OBJ_ROW]+scn_[SCN_ROW_DIS]
|
||||
nCol := nOff
|
||||
#ifdef __WVT__
|
||||
nCol := IF( nOff < 0, 0, nOff )
|
||||
#ENDIF
|
||||
|
||||
IF obj_[i,OBJ_TYPE] == OBJ_O_BOX
|
||||
DO CASE
|
||||
@@ -399,7 +337,7 @@ FUNCTION scrMoveLine(obj_,scn_)
|
||||
obj_[i,OBJ_COL] + scn_[SCN_COL_DIS] ;
|
||||
TO obj_[i,OBJ_TO_ROW] + scn_[SCN_ROW_DIS],;
|
||||
obj_[i,OBJ_TO_COL] + scn_[SCN_COL_DIS] ;
|
||||
COLOR IF(scn_[SCN_OBJ_HILITE]==i,scn_[SCN_CLR_HILITE],;
|
||||
COLOR iif(scn_[SCN_OBJ_HILITE]==i,scn_[SCN_CLR_HILITE],;
|
||||
'w/b' /* obj_[i,OBJ_COLOR] */)
|
||||
ENDCASE
|
||||
ENDIF
|
||||
@@ -407,25 +345,17 @@ FUNCTION scrMoveLine(obj_,scn_)
|
||||
IF obj_[ i,OBJ_ROW ] == scn_[ SCN_ROW_REP ]
|
||||
IF obj_[i,OBJ_TYPE] == OBJ_O_FIELD .OR. obj_[i,OBJ_TYPE] == OBJ_O_EXP
|
||||
cText := obj_[i,OBJ_TEXT]
|
||||
cColor := IF(scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],;
|
||||
IF(scn_[SCN_OBJ_HILITE ]==i,scn_[SCN_CLR_HILITE],;
|
||||
cColor := iif(scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],;
|
||||
iif(scn_[SCN_OBJ_HILITE ]==i,scn_[SCN_CLR_HILITE],;
|
||||
'W+/W' /* obj_[i,OBJ_COLOR] */ ))
|
||||
#ifdef __WVT__
|
||||
IF nOff < 0
|
||||
cText := substr( cText, abs( nOff )+1 )
|
||||
ENDIF
|
||||
#ENDIF
|
||||
@ nRow, nCol SAY cText COLOR cColor
|
||||
ENDIF
|
||||
|
||||
IF obj_[i,OBJ_TYPE] == OBJ_O_TEXT
|
||||
cText := obj_[i,OBJ_EQN]
|
||||
cColor := IF(scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],;
|
||||
IF(empty(obj_[i,OBJ_COLOR]),scn_[SCN_CLR_TEXT],;
|
||||
cColor := iif(scn_[SCN_OBJ_SELECTED]==i,scn_[SCN_CLR_SELECT],;
|
||||
iif(empty(obj_[i,OBJ_COLOR]),scn_[SCN_CLR_TEXT],;
|
||||
'W/B' /* obj_[i,OBJ_COLOR] */))
|
||||
#ifdef __WVT__
|
||||
cText := IF( nOff < 0, substr( cText, abs( nOff )+1 ), cText )
|
||||
#ENDIF
|
||||
@ nRow, nCol SAY cText COLOR cColor
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
@@ -71,127 +71,288 @@
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrProperty( obj_,scn_ )
|
||||
LOCAL prp_
|
||||
FUNCTION scrAddBox( obj_, scn_, nObj, Sel )
|
||||
LOCAL nKey,o_,border,cClr, nnObj, cFile
|
||||
|
||||
nnObj := nObj
|
||||
cFile := ''
|
||||
sel := 2
|
||||
|
||||
IF nnObj == 0
|
||||
o_:= scrObjBlank()
|
||||
|
||||
o_[ OBJ_TYPE ] := OBJ_O_BOX
|
||||
o_[ OBJ_ROW ] := scn_[ SCN_ROW_REP ]
|
||||
o_[ OBJ_COL ] := scn_[ SCN_COL_REP ]
|
||||
o_[ OBJ_TO_ROW ] := scn_[ SCN_ROW_REP ]
|
||||
o_[ OBJ_TO_COL ] := scn_[ SCN_COL_REP ]
|
||||
o_[ OBJ_SECTION ] := scrSecCur( scn_, scn_[ SCN_ROW_REP ] )
|
||||
o_[ OBJ_F_LEN ] := 9
|
||||
o_[ OBJ_MDL_F_TYPE ] := sel + 60
|
||||
|
||||
aadd( obj_, o_ )
|
||||
nObj := len( obj_ )
|
||||
ENDIF
|
||||
|
||||
border := 'ÚÄ¿³ÙÄÀ³' // can be DOUBLE_SINGLE, etc
|
||||
cClr := "w/b"
|
||||
obj_[ nObj, OBJ_BORDER ] := 0.5
|
||||
|
||||
obj_[ nObj, OBJ_BOX_SHAPE ] := border
|
||||
obj_[ nObj, OBJ_COLOR ] := cClr
|
||||
obj_[ nObj, OBJ_ID ] := "Frame"
|
||||
obj_[ nObj, OBJ_EQN ] := cFile
|
||||
obj_[ nObj, OBJ_PATTERN ] := 'CLEAR '
|
||||
|
||||
IF nnObj > 0
|
||||
scrOnLastCol( obj_, scn_, nObj )
|
||||
scrMove( obj_, scn_ )
|
||||
ENDIF
|
||||
|
||||
IF .t.
|
||||
scrMsg( 'Draw Frame WITH <Arrow Keys>. Finish WITH <Enter>' )
|
||||
|
||||
DO WHILE .t.
|
||||
nKey := inkey( 0 )
|
||||
DO CASE
|
||||
CASE nKey == K_RIGHT
|
||||
IF scrMovRgt( scn_ )
|
||||
obj_[ nObj,OBJ_TO_COL ]++
|
||||
ENDIF
|
||||
CASE nKey == K_LEFT
|
||||
IF scrMovLft( scn_ )
|
||||
obj_[ nObj,OBJ_TO_COL ]--
|
||||
ENDIF
|
||||
CASE nKey == K_DOWN
|
||||
IF scrMovDn( scn_ )
|
||||
obj_[ nObj,OBJ_TO_ROW ]++
|
||||
ENDIF
|
||||
CASE nKey == K_UP
|
||||
IF scrMovUp( scn_ )
|
||||
obj_[ nObj,OBJ_TO_ROW ]--
|
||||
ENDIF
|
||||
CASE nKey == K_ENTER
|
||||
EXIT
|
||||
ENDCASE
|
||||
scrMove( obj_,scn_ )
|
||||
scrStatus( obj_,scn_ )
|
||||
ENDDO
|
||||
ENDIF
|
||||
|
||||
scrOrdObj( obj_ )
|
||||
scrMsg()
|
||||
scn_[SCN_REFRESH] := OBJ_REFRESH_ALL
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrAddFld( obj_,scn_,nObj )
|
||||
LOCAL v_, n, sel_
|
||||
|
||||
sel_:= scrVvSelAble( scn_ )
|
||||
v_ := iif( nObj > 0, scrObj2Vv( obj_[ nObj ] ), scrVvBlank() )
|
||||
n := v_[ VV_FIELD ]
|
||||
IF nObj == 0
|
||||
v_[ VV_FIELD ] := 0
|
||||
v_[ VV_ID ] := space( 10 )
|
||||
v_[ VV_F_PIC ] := space( 15 )
|
||||
v_[ VV_COLOR ] := 'N/W '
|
||||
ENDIF
|
||||
|
||||
v_[ VV_EQN ] := 'fieldget('+ ltrim( str( n ) ) + ')'
|
||||
|
||||
sel_[ VV_ALIGN ] := .f.
|
||||
sel_[ VV_PRN_LEN ] := .f.
|
||||
sel_[ VV_PRN_LEN ] := .f.
|
||||
sel_[ VV_ALIGN ] := .f.
|
||||
sel_[ VV_COLOR ] := .f.
|
||||
sel_[ VV_POINT ] := .f.
|
||||
sel_[ VV_COL_JUST ] := .f.
|
||||
sel_[ VV_PATTERN ] := .f.
|
||||
sel_[ VV_F_TYPE ] := .T.
|
||||
|
||||
scrField( nObj, 1, obj_, scn_, v_, sel_, OBJ_CLR_FIELD )
|
||||
|
||||
IF nObj > 0
|
||||
scrOrdObj( obj_ )
|
||||
ENDIF
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrAddTxt( obj_,scn_,nKey,nMode )
|
||||
LOCAL txt_:={},n, lClub,i
|
||||
LOCAL n1,s1,s2,nTxt,nDel
|
||||
LOCAL nRepCol := scn_[SCN_COL_REP], nRepRow := scn_[SCN_ROW_REP]
|
||||
LOCAL lOrder := .f.
|
||||
// nMode 1.Add 2.Del 3.BS
|
||||
|
||||
// Scan obj_ FOR Text Objects Related WITH Current Report Row
|
||||
aeval( obj_,{|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_TEXT .AND. e_[ OBJ_ROW ] == nRepRow, aadd( txt_,e_ ),'' ) } )
|
||||
IF nMode == 1 // New Character
|
||||
IF empty( txt_ ) .OR. ascan( txt_,{|e_| VouchInRange( nRepCol, e_[OBJ_COL],e_[OBJ_TO_COL] ) } ) == 0
|
||||
aadd( txt_, scrObjBlank() ) ; lOrder := .t.
|
||||
nTxt := len( txt_ )
|
||||
txt_[ nTxt, OBJ_TYPE ] := OBJ_O_TEXT
|
||||
txt_[ nTxt, OBJ_F_TYPE ] := 'C'
|
||||
txt_[ nTxt, OBJ_F_LEN ] := 1
|
||||
txt_[ nTxt, OBJ_ALIGN ] := 'L'
|
||||
txt_[ nTxt, OBJ_ROW ] := scn_[SCN_ROW_REP]
|
||||
txt_[ nTxt, OBJ_COL ] := scn_[SCN_COL_REP]
|
||||
txt_[ nTxt, OBJ_EQN ] := ''
|
||||
txt_[ nTxt, OBJ_ID ] := 'Text'
|
||||
txt_[ nTxt, OBJ_COLOR ] := 'N/W'
|
||||
txt_[ nTxt, OBJ_PITCH ] := 10
|
||||
txt_[ nTxt, OBJ_SECTION ] := scrSecCur( scn_,scn_[SCN_ROW_REP] )
|
||||
txt_[ nTxt, OBJ_TO_ROW ] := scn_[SCN_ROW_REP]
|
||||
txt_[ nTxt, OBJ_TO_COL ] := scn_[SCN_COL_REP]
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
nTxt := ascan( txt_,{|e_| VouchInRange( nRepCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } )
|
||||
|
||||
IF nMode == 1
|
||||
txt_[nTxt,OBJ_EQN] := substr( txt_[nTxt,OBJ_EQN],1,;
|
||||
scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] ) + ;
|
||||
chr( nKey ) + ;
|
||||
substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + ;
|
||||
iif( ReadInsert(),1,2 ) )
|
||||
txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( txt_[nTxt,OBJ_EQN] )-1
|
||||
|
||||
ELSEIF nMode == 2 .OR. nMode == 3 // Delete
|
||||
IF readInsert()
|
||||
txt_[nTxt,OBJ_EQN] := substr( txt_[nTxt,OBJ_EQN],1,;
|
||||
scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] ) + ;
|
||||
substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + 2 )
|
||||
txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( txt_[nTxt,OBJ_EQN] )-1
|
||||
ELSE // Divide it IN two objects
|
||||
s1 := substr( txt_[nTxt,OBJ_EQN],1,scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] )
|
||||
s2 := substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + 2 )
|
||||
nDel := 0
|
||||
IF len( s1 ) > 0
|
||||
txt_[nTxt,OBJ_EQN] := s1
|
||||
txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( s1 )-1
|
||||
txt_[nTxt,OBJ_PRN_LEN] := len( s1 )
|
||||
ELSE
|
||||
nDel := nTxt
|
||||
ENDIF
|
||||
|
||||
IF len( s2 ) > 0
|
||||
IF nDel == 0
|
||||
aadd( txt_,aclone( txt_[nTxt] ) ) // scrObjBlank() )
|
||||
lOrder := .t.
|
||||
n1 := len( txt_ )
|
||||
ELSE
|
||||
n1 := nDel
|
||||
ENDIF
|
||||
txt_[n1,OBJ_TYPE] := OBJ_O_TEXT
|
||||
txt_[n1,OBJ_F_TYPE] := 'C'
|
||||
txt_[n1,OBJ_F_LEN] := len( s2 )
|
||||
txt_[n1,OBJ_PRN_LEN] := len( s2 )
|
||||
// txt_[n1,OBJ_ALIGN] := 'L'
|
||||
txt_[n1,OBJ_ROW] := scn_[SCN_ROW_REP]
|
||||
txt_[n1,OBJ_COL] := scn_[SCN_COL_REP]+1
|
||||
txt_[n1,OBJ_EQN] := s2
|
||||
txt_[n1,OBJ_ID] := 'Text'
|
||||
txt_[n1,OBJ_SECTION] := scrSecCur( scn_,scn_[SCN_ROW_REP] )
|
||||
txt_[n1,OBJ_TO_ROW] := scn_[SCN_ROW_REP]
|
||||
txt_[n1,OBJ_TO_COL] := txt_[n1,OBJ_COL]+len( s2 )-1
|
||||
ENDIF
|
||||
IF len( s1 )==0.AND.len( s2 )==0
|
||||
VouchAShrink( txt_,nTxt )
|
||||
IF empty( txt_ )
|
||||
aadd( txt_,scrObjBlank() )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF !empty( txt_ )
|
||||
DO WHILE .t.
|
||||
IF( n := ascan( txt_,{|e_| e_[OBJ_TO_COL] < e_[OBJ_COL] } ) ) > 0
|
||||
VouchAShrink( txt_,n )
|
||||
ELSE
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
IF empty( txt_ )
|
||||
aadd( txt_,scrObjBlank() )
|
||||
ENDIF
|
||||
// CLUB DIFFERENT TEXT OBJECTS IF THESE ARE ADJACENT
|
||||
asort( txt_,,,{|e_,f_| e_[OBJ_COL]<f_[OBJ_COL] } )
|
||||
|
||||
DO WHILE .t.
|
||||
lClub := .f.
|
||||
// n := txt_[1,OBJ_TO_COL]
|
||||
FOR i := 2 TO len( txt_ )
|
||||
IF txt_[i,OBJ_COL] == txt_[i-1,OBJ_TO_COL]+1
|
||||
txt_[i-1,OBJ_EQN] += txt_[i,OBJ_EQN] // Club both
|
||||
txt_[i-1,OBJ_TO_COL] := txt_[i-1,OBJ_COL] + len( txt_[i-1,OBJ_EQN] ) - 1
|
||||
txt_[i-1,OBJ_F_LEN] := len( txt_[i-1,OBJ_EQN] )
|
||||
VouchAShrink( txt_,i )
|
||||
// lUpdate := .t.
|
||||
lClub := .t.
|
||||
ENDIF
|
||||
NEXT
|
||||
IF !lClub
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
ENDIF
|
||||
|
||||
DO WHILE .t.
|
||||
IF( n := ascan( obj_,{|e_| e_[OBJ_TYPE] == OBJ_O_TEXT .AND. ;
|
||||
e_[OBJ_ROW ] == scn_[SCN_ROW_REP] } ) ) > 0
|
||||
VouchAShrink( obj_,n )
|
||||
IF empty( obj_ )
|
||||
aadd( obj_, scrObjBlank() )
|
||||
ENDIF
|
||||
ELSE
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
aeval( txt_,{|e_| iif( e_[OBJ_ROW]>0,aadd( obj_,e_ ),'' ) } ) // Now attach txt_
|
||||
|
||||
DO WHILE .t.
|
||||
IF( n := ascan( obj_,{|e_| e_[OBJ_TO_COL] < e_[OBJ_COL] } ) ) > 0
|
||||
VouchAShrink( obj_,n )
|
||||
IF empty( obj_ )
|
||||
aadd( obj_,scrObjBlank() )
|
||||
ENDIF
|
||||
ELSE
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
IF lOrder
|
||||
// scrOrdObj( obj_ )
|
||||
ENDIF
|
||||
IF nMode == 1
|
||||
keyboard( chr( K_RIGHT ) )
|
||||
ENDIF
|
||||
|
||||
scn_[SCN_REFRESH] := OBJ_REFRESH_LINE
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrProperty( obj_, scn_ )
|
||||
LOCAL prp_:= {}
|
||||
|
||||
HB_SYMBOL_UNUSED( obj_ )
|
||||
|
||||
DO CASE
|
||||
CASE scn_[ SCN_DESIGN ] == DGN_MODULE
|
||||
prp_:= iif( empty( scn_[SCN_PROPERTY ] ), prpMdlBlank(), scn_[ SCN_PROPERTY ] )
|
||||
//prp_:= prpModule( prp_ ) /* Fetch actual values */
|
||||
scn_[SCN_PROPERTY] := prp_
|
||||
|
||||
ENDCASE
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
#IF 0
|
||||
FUNCTION prpRStr2Ar(s,s1,s2)
|
||||
LOCAL prp_:= array(REP_INIT_VRBLS)
|
||||
|
||||
IF empty(s) // IF no property is defined, defaults
|
||||
RETURN prpRepBlank()
|
||||
ENDIF
|
||||
|
||||
prp_[ REP_DESC ] := substr( s , REP_OS_DESC , REP_LEN_DESC )
|
||||
prp_[ REP_TYPE ] := val( substr( s , REP_OS_TYPE , REP_LEN_TYPE ) )
|
||||
prp_[ REP_IDX_NO ] := val( substr( s , REP_OS_IDX_NO , REP_LEN_IDX_NO ) )
|
||||
prp_[ REP_IDX_EXP ] := substr( s , REP_OS_IDX_EXP , REP_LEN_IDX_EXP )
|
||||
prp_[ REP_PG_SIZE ] := substr( s , REP_OS_PG_SIZE , REP_LEN_PG_SIZE )
|
||||
prp_[ REP_PG_LEN ] := val( substr( s , REP_OS_PG_LEN , REP_LEN_PG_LEN ) )
|
||||
prp_[ REP_PG_WID ] := val( substr( s , REP_OS_PG_WID , REP_LEN_PG_WID ) )
|
||||
prp_[ REP_LINES ] := val( substr( s , REP_OS_LINES , REP_LEN_LINES ) )
|
||||
prp_[ REP_MG_TOP ] := val( substr( s , REP_OS_MG_TOP , REP_LEN_MG_TOP ) )
|
||||
prp_[ REP_MG_LEFT ] := val( substr( s , REP_OS_MG_LEFT , REP_LEN_MG_LEFT ) )
|
||||
prp_[ REP_MG_BOTTOM ] := val( substr( s , REP_OS_MG_BOTTOM , REP_LEN_MG_BOTTOM ) )
|
||||
prp_[ REP_EJ_BEFORE ] := substr( s , REP_OS_EJ_BEFORE , REP_LEN_EJ_BEFORE ) == 'T'
|
||||
prp_[ REP_EJ_AFTER ] := substr( s , REP_OS_EJ_AFTER , REP_LEN_EJ_AFTER ) == 'T'
|
||||
prp_[ REP_PLAIN ] := val( substr( s , REP_OS_PLAIN , REP_LEN_PLAIN ) )
|
||||
prp_[ REP_FTR_PAG ] := substr( s , REP_OS_FTR_PAG , REP_LEN_FTR_PAG )
|
||||
prp_[ REP_SMR_NEXT ] := substr( s , REP_OS_SMR_NEXT , REP_LEN_SMR_NEXT ) == 'T'
|
||||
prp_[ REP_HDR_PAGES ] := substr( s , REP_OS_HDR_PAGES , REP_LEN_HDR_PAGES )
|
||||
prp_[ REP_BNK_LINES ] := val( substr( s , REP_OS_BNK_LINES , REP_LEN_BNK_LINES ) )
|
||||
prp_[ REP_BNK_AFTER ] := val( substr( s , REP_OS_BNK_AFTER , REP_LEN_BNK_AFTER ) )
|
||||
prp_[ REP_DATA_BOX ] := substr( s , REP_OS_DATA_BOX , REP_LEN_DATA_BOX ) == 'T'
|
||||
prp_[ REP_FILE ] := substr( s , REP_OS_FILE , REP_LEN_FILE )
|
||||
prp_[ REP_COPIES ] := val( substr( s , REP_OS_COPIES , REP_LEN_COPIES ) )
|
||||
prp_[ REP_TTL_PAGES ] := substr( s , REP_OS_TTL_PAGES , REP_LEN_TTL_PAGES )
|
||||
prp_[ REP_INIT_CPI ] := val( substr( s , REP_OS_INIT_CPI , REP_LEN_INIT_CPI ) )
|
||||
prp_[ REP_PRN_QLY ] := substr( s , REP_OS_PRN_QLY , REP_LEN_PRN_QLY )
|
||||
prp_[ REP_RECONFIRM ] := substr( s , REP_OS_RECONFIRM , REP_LEN_RECONFIRM ) == 'T'
|
||||
prp_[ REP_FTR_BOTTOM ] := substr( s , REP_OS_FTR_BOTTOM, REP_LEN_FTR_BOTTOM ) == 'T'
|
||||
prp_[ REP_HTML ] := substr( s , REP_OS_HTML , REP_LEN_HTML ) == 'T'
|
||||
prp_[ REP_PRINTER ] := substr( s , REP_OS_PRINTER , REP_LEN_PRINTER )
|
||||
prp_[ REP_ORIENT ] := substr( s , REP_OS_ORIENT , REP_LEN_ORIENT )
|
||||
prp_[ REP_PREVIEW ] := substr( s , REP_OS_PREVIEW , REP_LEN_PREVIEW ) == 'T'
|
||||
prp_[ REP_GRAY ] := substr( s , REP_OS_GRAY , REP_LEN_GRAY ) == 'T'
|
||||
prp_[ REP_WINDLG ] := substr( s , REP_OS_WINDLG , REP_LEN_WINDLG ) == 'T'
|
||||
prp_[ REP_DUPLEX ] := val( substr( s , REP_OS_DUPLEX , REP_LEN_DUPLEX ) )
|
||||
prp_[ REP_COLS ] := val( substr( s , REP_OS_COLS , REP_LEN_COLS ) )
|
||||
prp_[ REP_ROWS ] := val( substr( s , REP_OS_ROWS , REP_LEN_ROWS ) )
|
||||
|
||||
prp_[ REP_FOR ] := substr( s1, REP_OS_FOR , REP_LEN_FOR )
|
||||
prp_[ REP_WHILE ] := substr( s1, REP_OS_WHILE , REP_LEN_WHILE )
|
||||
prp_[ REP_FIRST ] := substr( s1, REP_OS_FIRST , REP_LEN_FIRST )
|
||||
prp_[ REP_EXE_PRE ] := substr( s2, REP_OS_EXE_PRE , REP_LEN_EXE_PRE )
|
||||
prp_[ REP_EXE_POST ] := substr( s2, REP_OS_EXE_POST , REP_LEN_EXE_POST )
|
||||
|
||||
prp_[ REP_ORIENT ] := iif( empty( prp_[ REP_ORIENT ] ), 'P', prp_[ REP_ORIENT ] )
|
||||
|
||||
RETURN prp_
|
||||
#ENDIF
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION prpRAr2Str(prp_,s,s1,s2) // Passed by reference
|
||||
|
||||
s := pad( prp_[ REP_DESC ] , REP_LEN_DESC ) +;
|
||||
pad( NTRIM( prp_[ REP_TYPE ] ), REP_LEN_TYPE ) +;
|
||||
pad( NTRIM( prp_[ REP_IDX_NO ] ), REP_LEN_IDX_NO ) +;
|
||||
pad( prp_[ REP_IDX_EXP ] , REP_LEN_IDX_EXP ) +;
|
||||
pad( prp_[ REP_PG_SIZE ] , REP_LEN_PG_SIZE ) +;
|
||||
pad( NTRIM( prp_[ REP_PG_LEN ] ), REP_LEN_PG_LEN ) +;
|
||||
pad( NTRIM( prp_[ REP_PG_WID ] ), REP_LEN_PG_WID ) +;
|
||||
pad( NTRIM( prp_[ REP_LINES ] ), REP_LEN_LINES ) +;
|
||||
pad( NTRIM( prp_[ REP_MG_TOP ] ), REP_LEN_MG_TOP ) +;
|
||||
pad( NTRIM( prp_[ REP_MG_LEFT ] ), REP_LEN_MG_LEFT ) +;
|
||||
pad( NTRIM( prp_[ REP_MG_BOTTOM ] ), REP_LEN_MG_BOTTOM ) +;
|
||||
iif( prp_[ REP_EJ_BEFORE ] , 'T','F' ) +;
|
||||
iif( prp_[ REP_EJ_AFTER ] , 'T','F' ) +;
|
||||
pad( NTRIM( prp_[ REP_PLAIN ] ), REP_LEN_PLAIN ) +;
|
||||
pad( prp_[ REP_FTR_PAG ] , REP_LEN_FTR_PAG ) +;
|
||||
iif( prp_[ REP_SMR_NEXT ] , 'T','F' ) +;
|
||||
pad( prp_[ REP_HDR_PAGES ] , REP_LEN_HDR_PAGES ) +;
|
||||
pad( NTRIM( prp_[ REP_BNK_LINES ] ), REP_LEN_BNK_LINES ) +;
|
||||
pad( NTRIM( prp_[ REP_BNK_AFTER ] ), REP_LEN_BNK_AFTER ) +;
|
||||
iif( prp_[ REP_DATA_BOX ] ,'T','F' ) +;
|
||||
pad( prp_[ REP_FILE ] , REP_LEN_FILE ) +;
|
||||
pad( NTRIM( prp_[ REP_COPIES ] ), REP_LEN_COPIES ) +;
|
||||
pad( prp_[ REP_TTL_PAGES ] , REP_LEN_TTL_PAGES ) +;
|
||||
pad( NTRIM( prp_[ REP_INIT_CPI ] ), REP_LEN_INIT_CPI ) +;
|
||||
pad( prp_[ REP_PRN_QLY ] , REP_LEN_PRN_QLY ) +;
|
||||
iif( prp_[ REP_RECONFIRM ] , 'T','F' ) +;
|
||||
iif( prp_[ REP_FTR_BOTTOM ] , 'T','F' ) +;
|
||||
iif( prp_[ REP_HTML ] , 'T','F' ) +;
|
||||
pad( prp_[ REP_PRINTER ] , REP_LEN_PRINTER ) +;
|
||||
pad( prp_[ REP_ORIENT ] , REP_LEN_ORIENT ) +;
|
||||
iif( prp_[ REP_PREVIEW ] , 'T','F' ) +;
|
||||
iif( prp_[ REP_GRAY ] , 'T','F' ) +;
|
||||
iif( prp_[ REP_WINDLG ] , 'T','F' ) +;
|
||||
pad( NTRIM( prp_[ REP_DUPLEX ] ), REP_LEN_DUPLEX ) +;
|
||||
pad( NTRIM( prp_[ REP_COLS ] ), REP_LEN_COLS ) +;
|
||||
pad( NTRIM( prp_[ REP_ROWS ] ), REP_LEN_ROWS )
|
||||
|
||||
s1 := pad( prp_[ REP_FOR ] , REP_LEN_FOR ) +;
|
||||
pad( prp_[ REP_WHILE ] , REP_LEN_WHILE ) +;
|
||||
pad( prp_[ REP_FIRST ] , REP_LEN_FIRST )
|
||||
|
||||
s2 := pad( prp_[ REP_EXE_PRE ] , REP_LEN_EXE_PRE ) +;
|
||||
pad( prp_[ REP_EXE_POST ] , REP_LEN_EXE_POST )
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrVvBlank()
|
||||
@@ -538,256 +699,6 @@ FUNCTION scrClrFrBk( cClr )
|
||||
#ENDIF
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrAddBox( obj_, scn_, nObj, Sel )
|
||||
LOCAL nKey,o_,border,cClr, nnObj, cFile
|
||||
|
||||
DEFAULT Sel TO 0
|
||||
|
||||
nnObj := nObj
|
||||
cFile := ''
|
||||
border := ' '+chr( 255 )
|
||||
cClr := 'N/X '
|
||||
sel := 2
|
||||
|
||||
IF nnObj == 0
|
||||
o_:= scrObjBlank()
|
||||
|
||||
o_[ OBJ_TYPE ] := OBJ_O_BOX
|
||||
o_[ OBJ_ROW ] := scn_[ SCN_ROW_REP ]
|
||||
o_[ OBJ_COL ] := scn_[ SCN_COL_REP ]
|
||||
o_[ OBJ_TO_ROW ] := scn_[ SCN_ROW_REP ]
|
||||
o_[ OBJ_TO_COL ] := scn_[ SCN_COL_REP ]
|
||||
o_[ OBJ_SECTION ] := scrSecCur( scn_, scn_[ SCN_ROW_REP ] )
|
||||
o_[ OBJ_F_LEN ] := 9
|
||||
o_[ OBJ_MDL_F_TYPE ] := sel + 60
|
||||
|
||||
aadd( obj_, o_ )
|
||||
nObj := len( obj_ )
|
||||
ELSE
|
||||
sel := obj_[ nObj, OBJ_MDL_F_TYPE ] - 60
|
||||
ENDIF
|
||||
|
||||
IF sel == 2
|
||||
border := 'ÚÄ¿³ÙÄÀ³' // can be DOUBLE_SINGLE, etc
|
||||
cClr := "w/b"
|
||||
obj_[ nObj, OBJ_BORDER ] := 0.5
|
||||
ENDIF
|
||||
|
||||
obj_[ nObj, OBJ_BOX_SHAPE ] := border
|
||||
obj_[ nObj, OBJ_COLOR ] := cClr
|
||||
obj_[ nObj, OBJ_ID ] := "Frame"
|
||||
obj_[ nObj, OBJ_EQN ] := cFile
|
||||
obj_[ nObj, OBJ_PATTERN ] := 'CLEAR '
|
||||
|
||||
IF nnObj == 0
|
||||
scrMsg( 'Draw Frame WITH <Arrow Keys>. Finish WITH <Enter>' )
|
||||
|
||||
DO WHILE .t.
|
||||
nKey := inkey( 0 )
|
||||
DO CASE
|
||||
CASE nKey == K_RIGHT .AND. sel <> 5
|
||||
IF scrMovRgt( scn_ )
|
||||
obj_[ nObj,OBJ_TO_COL ]++
|
||||
ENDIF
|
||||
CASE nKey == K_LEFT .AND. sel <> 5
|
||||
IF scrMovLft( scn_ )
|
||||
obj_[ nObj,OBJ_TO_COL ]--
|
||||
ENDIF
|
||||
CASE nKey == K_DOWN .AND. sel <> 4
|
||||
IF scrMovDn( scn_ )
|
||||
obj_[ nObj,OBJ_TO_ROW ]++
|
||||
ENDIF
|
||||
CASE nKey == K_UP .AND. sel <> 4
|
||||
IF scrMovUp( scn_ )
|
||||
obj_[ nObj,OBJ_TO_ROW ]--
|
||||
ENDIF
|
||||
CASE nKey == K_ENTER
|
||||
EXIT
|
||||
ENDCASE
|
||||
scrMove( obj_,scn_ )
|
||||
scrStatus( obj_,scn_ )
|
||||
ENDDO
|
||||
ENDIF
|
||||
|
||||
scrOrdObj( obj_ )
|
||||
scrMsg()
|
||||
scn_[SCN_REFRESH] := OBJ_REFRESH_ALL
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrAddFld( obj_,scn_,nObj )
|
||||
|
||||
HB_SYMBOL_UNUSED( obj_ )
|
||||
HB_SYMBOL_UNUSED( nObj )
|
||||
|
||||
DO CASE
|
||||
CASE scn_[SCN_DESIGN] == DGN_MODULE
|
||||
scrMdlFld( obj_, scn_, nObj )
|
||||
ENDCASE
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrAddTxt( obj_,scn_,nKey,nMode )
|
||||
LOCAL txt_:={},n, lClub,i
|
||||
LOCAL n1,s1,s2,nTxt,nDel
|
||||
LOCAL nRepCol := scn_[SCN_COL_REP], nRepRow := scn_[SCN_ROW_REP]
|
||||
LOCAL lOrder := .f.
|
||||
// nMode 1.Add 2.Del 3.BS
|
||||
|
||||
// Scan obj_ FOR Text Objects Related WITH Current Report Row
|
||||
aeval( obj_,{|e_| iif( e_[ OBJ_TYPE ] == OBJ_O_TEXT .AND. e_[ OBJ_ROW ] == nRepRow, aadd( txt_,e_ ),'' ) } )
|
||||
IF nMode == 1 // New Character
|
||||
IF empty( txt_ ) .OR. ascan( txt_,{|e_| VouchInRange( nRepCol, e_[OBJ_COL],e_[OBJ_TO_COL] ) } ) == 0
|
||||
aadd( txt_, scrObjBlank() ) ; lOrder := .t.
|
||||
nTxt := len( txt_ )
|
||||
txt_[ nTxt, OBJ_TYPE ] := OBJ_O_TEXT
|
||||
txt_[ nTxt, OBJ_F_TYPE ] := 'C'
|
||||
txt_[ nTxt, OBJ_F_LEN ] := 1
|
||||
txt_[ nTxt, OBJ_ALIGN ] := 'L'
|
||||
txt_[ nTxt, OBJ_ROW ] := scn_[SCN_ROW_REP]
|
||||
txt_[ nTxt, OBJ_COL ] := scn_[SCN_COL_REP]
|
||||
txt_[ nTxt, OBJ_EQN ] := ''
|
||||
txt_[ nTxt, OBJ_ID ] := 'Text'
|
||||
txt_[ nTxt, OBJ_COLOR ] := 'N/W'
|
||||
txt_[ nTxt, OBJ_PITCH ] := 10
|
||||
txt_[ nTxt, OBJ_SECTION ] := scrSecCur( scn_,scn_[SCN_ROW_REP] )
|
||||
txt_[ nTxt, OBJ_TO_ROW ] := scn_[SCN_ROW_REP]
|
||||
txt_[ nTxt, OBJ_TO_COL ] := scn_[SCN_COL_REP]
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
nTxt := ascan( txt_,{|e_| VouchInRange( nRepCol, e_[ OBJ_COL ], e_[ OBJ_TO_COL ] ) } )
|
||||
|
||||
IF nMode == 1
|
||||
txt_[nTxt,OBJ_EQN] := substr( txt_[nTxt,OBJ_EQN],1,;
|
||||
scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] ) + ;
|
||||
chr( nKey ) + ;
|
||||
substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + ;
|
||||
iif( ReadInsert(),1,2 ) )
|
||||
txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( txt_[nTxt,OBJ_EQN] )-1
|
||||
|
||||
ELSEIF nMode == 2 .OR. nMode == 3 // Delete
|
||||
IF readInsert()
|
||||
txt_[nTxt,OBJ_EQN] := substr( txt_[nTxt,OBJ_EQN],1,;
|
||||
scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] ) + ;
|
||||
substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + 2 )
|
||||
txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( txt_[nTxt,OBJ_EQN] )-1
|
||||
ELSE // Divide it IN two objects
|
||||
s1 := substr( txt_[nTxt,OBJ_EQN],1,scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] )
|
||||
s2 := substr( txt_[nTxt,OBJ_EQN],scn_[SCN_COL_REP]-txt_[nTxt,OBJ_COL] + 2 )
|
||||
nDel := 0
|
||||
IF len( s1 ) > 0
|
||||
txt_[nTxt,OBJ_EQN] := s1
|
||||
txt_[nTxt,OBJ_TO_COL] := txt_[nTxt,OBJ_COL]+len( s1 )-1
|
||||
txt_[nTxt,OBJ_PRN_LEN] := len( s1 )
|
||||
ELSE
|
||||
nDel := nTxt
|
||||
ENDIF
|
||||
|
||||
IF len( s2 ) > 0
|
||||
IF nDel == 0
|
||||
aadd( txt_,aclone( txt_[nTxt] ) ) // scrObjBlank() )
|
||||
lOrder := .t.
|
||||
n1 := len( txt_ )
|
||||
ELSE
|
||||
n1 := nDel
|
||||
ENDIF
|
||||
txt_[n1,OBJ_TYPE] := OBJ_O_TEXT
|
||||
txt_[n1,OBJ_F_TYPE] := 'C'
|
||||
txt_[n1,OBJ_F_LEN] := len( s2 )
|
||||
txt_[n1,OBJ_PRN_LEN] := len( s2 )
|
||||
// txt_[n1,OBJ_ALIGN] := 'L'
|
||||
txt_[n1,OBJ_ROW] := scn_[SCN_ROW_REP]
|
||||
txt_[n1,OBJ_COL] := scn_[SCN_COL_REP]+1
|
||||
txt_[n1,OBJ_EQN] := s2
|
||||
txt_[n1,OBJ_ID] := 'Text'
|
||||
txt_[n1,OBJ_SECTION] := scrSecCur( scn_,scn_[SCN_ROW_REP] )
|
||||
txt_[n1,OBJ_TO_ROW] := scn_[SCN_ROW_REP]
|
||||
txt_[n1,OBJ_TO_COL] := txt_[n1,OBJ_COL]+len( s2 )-1
|
||||
ENDIF
|
||||
IF len( s1 )==0.AND.len( s2 )==0
|
||||
VouchAShrink( txt_,nTxt )
|
||||
IF empty( txt_ )
|
||||
aadd( txt_,scrObjBlank() )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF !empty( txt_ )
|
||||
DO WHILE .t.
|
||||
IF( n := ascan( txt_,{|e_| e_[OBJ_TO_COL] < e_[OBJ_COL] } ) ) > 0
|
||||
VouchAShrink( txt_,n )
|
||||
ELSE
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
IF empty( txt_ )
|
||||
aadd( txt_,scrObjBlank() )
|
||||
ENDIF
|
||||
// CLUB DIFFERENT TEXT OBJECTS IF THESE ARE ADJACENT
|
||||
asort( txt_,,,{|e_,f_| e_[OBJ_COL]<f_[OBJ_COL] } )
|
||||
|
||||
DO WHILE .t.
|
||||
lClub := .f.
|
||||
// n := txt_[1,OBJ_TO_COL]
|
||||
FOR i := 2 TO len( txt_ )
|
||||
IF txt_[i,OBJ_COL] == txt_[i-1,OBJ_TO_COL]+1
|
||||
txt_[i-1,OBJ_EQN] += txt_[i,OBJ_EQN] // Club both
|
||||
txt_[i-1,OBJ_TO_COL] := txt_[i-1,OBJ_COL] + len( txt_[i-1,OBJ_EQN] ) - 1
|
||||
txt_[i-1,OBJ_F_LEN] := len( txt_[i-1,OBJ_EQN] )
|
||||
VouchAShrink( txt_,i )
|
||||
// lUpdate := .t.
|
||||
lClub := .t.
|
||||
ENDIF
|
||||
NEXT
|
||||
IF !lClub
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
ENDIF
|
||||
|
||||
DO WHILE .t.
|
||||
IF( n := ascan( obj_,{|e_| e_[OBJ_TYPE] == OBJ_O_TEXT .AND. ;
|
||||
e_[OBJ_ROW ] == scn_[SCN_ROW_REP] } ) ) > 0
|
||||
VouchAShrink( obj_,n )
|
||||
IF empty( obj_ )
|
||||
aadd( obj_, scrObjBlank() )
|
||||
ENDIF
|
||||
ELSE
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
aeval( txt_,{|e_| iif( e_[OBJ_ROW]>0,aadd( obj_,e_ ),'' ) } ) // Now attach txt_
|
||||
|
||||
DO WHILE .t.
|
||||
IF( n := ascan( obj_,{|e_| e_[OBJ_TO_COL] < e_[OBJ_COL] } ) ) > 0
|
||||
VouchAShrink( obj_,n )
|
||||
IF empty( obj_ )
|
||||
aadd( obj_,scrObjBlank() )
|
||||
ENDIF
|
||||
ELSE
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
IF lOrder
|
||||
// scrOrdObj( obj_ )
|
||||
ENDIF
|
||||
IF nMode == 1
|
||||
keyboard( chr( K_RIGHT ) )
|
||||
ENDIF
|
||||
|
||||
scn_[SCN_REFRESH] := OBJ_REFRESH_LINE
|
||||
|
||||
RETURN NIL
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
FUNCTION scrSecCur( scn_, nRepRow ) // Numeric id of sector
|
||||
LOCAL n,i
|
||||
n := 0
|
||||
@@ -850,7 +761,7 @@ FUNCTION scrInkey( key_ )
|
||||
|
||||
DO WHILE .t.
|
||||
nKey := inkey( 0 )
|
||||
IF ascan( key_,nKey )>0
|
||||
IF ascan( key_, nKey ) > 0
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
|
||||
cu_main.prg
|
||||
cu_desgn.prg
|
||||
cu_field.prg
|
||||
cu_menu.prg
|
||||
cu_outpt.prg
|
||||
cu_prpty.prg
|
||||
|
||||
Reference in New Issue
Block a user