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:
Pritpal Bedi
2011-08-15 17:22:26 +00:00
parent a7c9284317
commit 84fbaf75bf
8 changed files with 1859 additions and 1116 deletions

View File

@@ -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

View File

@@ -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_
//----------------------------------------------------------------------//

View File

@@ -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_
//----------------------------------------------------------------------//

View File

@@ -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_

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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

View File

@@ -18,7 +18,6 @@
cu_main.prg
cu_desgn.prg
cu_field.prg
cu_menu.prg
cu_outpt.prg
cu_prpty.prg