2011-08-16 15:08 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)

- contrib/hbcuied/cu_desgn.prg
  * contrib/hbcuied/cu_main.prg
  - contrib/hbcuied/cu_menu.prg
  * contrib/hbcuied/cu_object.prg
  - contrib/hbcuied/cu_outpt.prg
  - contrib/hbcuied/cu_prpty.prg
  * contrib/hbcuied/cu_utlty.prg
  * contrib/hbcuied/hbcuied.ch
  * contrib/hbcuied/hbcuied.hbp
    - Deleted: some sources.
    * Code cleanup and more constructs.
    * Changed: procedural approach to class code.
This commit is contained in:
Pritpal Bedi
2011-08-16 22:11:30 +00:00
parent 84fbaf75bf
commit 35135c0486
10 changed files with 1816 additions and 3865 deletions

View File

@@ -16,6 +16,20 @@
The license applies to all entries newer than 2009-04-28.
*/
2011-08-16 15:08 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
- contrib/hbcuied/cu_desgn.prg
* contrib/hbcuied/cu_main.prg
- contrib/hbcuied/cu_menu.prg
* contrib/hbcuied/cu_object.prg
- contrib/hbcuied/cu_outpt.prg
- contrib/hbcuied/cu_prpty.prg
* contrib/hbcuied/cu_utlty.prg
* contrib/hbcuied/hbcuied.ch
* contrib/hbcuied/hbcuied.hbp
- Deleted: some sources.
* Code cleanup and more constructs.
* Changed: procedural approach to class code.
2011-08-15 10:20 UTC-0800 Pritpal Bedi (bedipritpal@hotmail.com)
* contrib/hbcuied/cu_desgn.prg
- contrib/hbcuied/cu_field.prg

File diff suppressed because it is too large Load Diff

View File

@@ -70,6 +70,8 @@
/*----------------------------------------------------------------------*/
FUNCTION Main( cSource, cScreen )
LOCAL bErr := errorBlock( {|o| ThisError( o ) } )
LOCAL oCUI
SET SCOREBOARD OFF
SET EPOCH TO 1950
@@ -79,18 +81,30 @@ FUNCTION Main( cSource, cScreen )
hb_gtInfo( HB_GTI_WINTITLE , "Harbour CUI Forms Designer v1.0" )
hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_ROWS )
hb_gtInfo( HB_GTI_ICONFILE , "../../packages/harb_win.ico" )
hb_gtInfo( HB_GTI_ICONFILE , "..\..\package\favicon.ico" )
dgn_Screen( cSource, cScreen )
oCUI := hbCUIEditor():new( cSource, cScreen ):create()
oCUI:destroy()
ErrorBlock( bErr )
RETURN cSource
RETURN NIL
/*----------------------------------------------------------------------*/
FUNCTION ThisError( oError )
alert( oError:description + ":" + oError:operation + ";" + ;
ProcName( 2 ) + "-" + hb_ntos( procLine( 2 ) ) + ";" + ;
ProcName( 3 ) + "-" + hb_ntos( procLine( 3 ) ) )
QUIT
RETURN oError
/*----------------------------------------------------------------------*/
FUNCTION HB_GTSYS()
REQUEST HB_GT_WVT_DEFAULT
RETURN NIL
/*----------------------------------------------------------------------*/

View File

@@ -1,190 +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"
#include "hbgtinfo.ch"
//----------------------------------------------------------------------//
#define REP_MSG_WAIT_YES .T.
#define REP_MSG_WAIT_NO .F.
//----------------------------------------------------------------------//
FUNCTION dgn_Screen( cObject, cScreen )
LOCAL rpt_:={}
LOCAL bErr
bErr := errorBlock( {|| Break() } )
IF ! empty( rpt_:= rptDefine( cObject, rpt_, REP_FOR_MDL,/*struct_*/, cScreen, 1, REP_MSG_WAIT_YES ) )
rptSave( cObject, /*cRpt*/, rpt_, 1, REP_FOR_MDL, REP_MSG_WAIT_YES )
ENDIF
errorBlock( bErr )
RETURN NIL
//---------------------------------------------------------------------//
STATIC FUNCTION rptDefine( cObject,rpt_,nMode,struct_,cRpt,nWhere,lMsg )
LOCAL scn_,a_,obj_
a_ := rpt2ObjScn( cObject,rpt_,nMode,struct_,cRpt,nWhere,lMsg )
obj_:= a_[ 1 ]
scn_:= a_[ 2 ]
a_ := Operate(obj_,scn_)
obj_:= a_[ 1 ]
scn_:= a_[ 2 ]
rpt_:= objScn2rpt( obj_,scn_,nMode )
RETURN rpt_
//----------------------------------------------------------------------//
FUNCTION rptSave( /* cObject,cRpt,rRpt_,nWhere,nMode,lMsgWait */ )
RETURN .t.
//---------------------------------------------------------------------//
STATIC FUNCTION rptInit()
RETURN { { '',0,'' } }
//---------------------------------------------------------------------//
FUNCTION rpt2ObjScn( cObject,rpt_,nMode,struct_,cRpt,nWhere,lMsg )
LOCAL obj_,scn_:={}
LOCAL n
HB_SYMBOL_UNUSED( struct_ )
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 ] ) )
ENDIF
#if 0
IF (n := ascan(rpt_,{|e_| e_[2]== 51 })) > 0 // Property
scn_[ SCN_PROPERTY ] := prpStr2Mdl( rpt_[ n,3 ] )
ENDIF
#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
scn_[SCN_FILE ] := iif( empty( rpt_[ 1,1 ] ), 'Untitled', substr( rpt_[ 1,1 ], 13 ) )
scn_[SCN_COBJECT ] := cObject // FOR threaded usage
scn_[SCN_CRPT ] := cRpt
scn_[SCN_NWHERE ] := nWhere
scn_[SCN_NMODE ] := nMode
scn_[SCN_LMSG ] := lMsg
RETURN {obj_,scn_}
//----------------------------------------------------------------------//
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 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

@@ -1,448 +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 "inkey.ch"
#include "wvtwin.ch"
/*----------------------------------------------------------------------*/
FUNCTION ScrDisplay( scn_ )
dispbegin()
setcursor(0)
setColor( scn_[ SCN_CLR_OVERALL ] )
cls
@ scn_[SCN_ROW_RULER], scn_[SCN_LEFT] ;
SAY substr( scn_[SCN_RULER], 1, scn_[SCN_RIGHT] - scn_[SCN_LEFT] + 1 ) ;
COLOR scn_[ SCN_CLR_RULER ]
scrMsg()
setcolor( scn_[ SCN_CLR_WINDOW ] )
setCursor(2)
dispend()
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrStatus(obj_,scn_)
LOCAL s,objId,nSct,cClr:='GR+/BG'
LOCAL typ_
dispbegin()
s := pad(scn_[SCN_DESIGN_ID],8)+' ³ '
s += pad(scn_[SCN_FILE],12)+;
' ³ '+;
' R:'+;
str( scn_[SCN_ROW_REP]-1, 3 )+;
' C:'+;
str( scn_[SCN_COL_REP]-1, 3 )+;
' ³ ' +;
iif(readInsert(),'Ins ',' ')+;
' ³ '
objId := ''
IF scn_[SCN_OBJ_HILITE] > 0
objId := scn_[SCN_OBJ_ID_,obj_[scn_[SCN_OBJ_HILITE],OBJ_TYPE]]
IF obj_[scn_[SCN_OBJ_HILITE],OBJ_TYPE] == OBJ_O_BOX
typ_:= {'Bitmap','Frame','Ellipse','Line (H)','Line (V)','Grid','BarCode','Text Box'}
objId := typ_[obj_[scn_[SCN_OBJ_HILITE],OBJ_MDL_F_TYPE]-60]
ENDIF
ELSEIF scn_[SCN_OBJ_SELECTED] > 0
objId := scn_[SCN_OBJ_ID_,obj_[scn_[SCN_OBJ_SELECTED],OBJ_TYPE]]
IF obj_[scn_[SCN_OBJ_SELECTED],OBJ_TYPE] == OBJ_O_BOX
typ_:= {'Bitmap','Frame','Ellipse','Line (H)','Line (V)','Grid','BarCode','Text Box'}
objId := typ_[obj_[scn_[SCN_OBJ_SELECTED],OBJ_MDL_F_TYPE]-60]
ENDIF
ENDIF
s += pad(trim(objId),10)+' ³ '
IF ( nSct := scrSecOrd(scn_,scn_[SCN_ROW_REP])) <> NIL
s += scn_[ SCN_SECTORS_,nSct,SCT_ID ]
ENDIF
@ scn_[SCN_STATUS_ROW], scn_[SCN_STATUS_COL] ;
say pad(s,scn_[SCN_STATUS_COL_TO]-scn_[SCN_STATUS_COL]+1) ;
color scn_[SCN_CLR_STATUS]
/* 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_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
@ scn_[SCN_ROW_CUR],scn_[SCN_COL_CUR] SAY ''
// Now update current cursor position
scn_[SCN_ROW_PREV] := scn_[SCN_ROW_CUR]
scn_[SCN_COL_PREV] := scn_[SCN_COL_CUR]
dispend()
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrHiLite(obj_,scn_,mode)
LOCAL nObj := scn_[SCN_OBJ_HILITE]
LOCAL cColor := iif(mode,scn_[SCN_CLR_HILITE],obj_[nObj,OBJ_COLOR])
IF obj_[nObj,OBJ_TYPE] == OBJ_O_BOX
DispBegin()
dispBox( obj_[nObj,OBJ_ROW] + scn_[SCN_ROW_DIS],;
obj_[nObj,OBJ_COL] + scn_[SCN_COL_DIS],;
obj_[nObj,OBJ_TO_ROW] + scn_[SCN_ROW_DIS],;
obj_[nObj,OBJ_TO_COL] + scn_[SCN_COL_DIS],;
obj_[nObj,OBJ_BOX_SHAPE],;
'gr+/b' /* cColor */)
DispEnd()
ELSEIF obj_[nObj,OBJ_TYPE] == OBJ_O_FIELD .OR. ;
obj_[nObj,OBJ_TYPE] == OBJ_O_EXP
DispBegin()
@ obj_[nObj,OBJ_ROW]+scn_[SCN_ROW_DIS], ;
obj_[nObj,OBJ_COL]+scn_[SCN_COL_DIS] ;
say obj_[nObj,OBJ_TEXT] color cColor
DispEnd()
ENDIF
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrDispSelctd( obj_,scn_ )
LOCAL i,j,nCol,nRow
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'
ENDIF
NEXT
ENDIF
NEXT
DispEnd()
ENDIF
RETURN NIL
//----------------------------------------------------------------------//
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'
ENDIF
NEXT
ENDIF
NEXT
DispEnd()
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrMove( obj_, scn_ )
LOCAL i
LOCAL crs := setCursor( 0 )
LOCAL nOff, cText, nRow, nCol, cColor
dispBegin()
dispBox(scn_[ SCN_TOP ],;
scn_[ SCN_LEFT ],;
scn_[ SCN_BOTTOM ],;
scn_[ SCN_RIGHT ],;
scn_[ SCN_DRAW_FILL ],;
scn_[ SCN_CLR_PREV ] )
FOR i := 1 TO len( obj_ )
IF obj_[ i,OBJ_ROW ] + scn_[ SCN_ROW_DIS ] <= scn_[ SCN_BOTTOM ] .AND. ;
obj_[ i,OBJ_COL ] + scn_[ SCN_COL_DIS ] <= scn_[ SCN_RIGHT ]
nOff := obj_[ i,OBJ_COL ] + scn_[ SCN_COL_DIS ]
nRow := obj_[ i,OBJ_ROW ] + scn_[ SCN_ROW_DIS ]
nCol := obj_[ i,OBJ_COL ] + scn_[ SCN_COL_DIS ]
IF nOff < 0
nCol := 0
ENDIF
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 } )
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 ),;
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
cText := obj_[ i,OBJ_TEXT ]
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 )
ENDIF
@ nRow, nCol SAY cText COLOR cColor
ENDIF
IF obj_[i,OBJ_TYPE] == OBJ_O_TEXT
cText := obj_[ i,OBJ_EQN ]
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 )
ENDIF
@ nRow, nCol SAY cText COLOR cColor
ENDIF
ELSEIF ( obj_[ i,OBJ_ROW ] + scn_[ SCN_ROW_DIS ] > scn_[ SCN_BOTTOM ] )
ENDIF
NEXT
ScrDispSelctd( obj_, scn_ )
dispEnd()
setcursor( crs )
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrMoveLine( obj_,scn_ )
LOCAL scrL,scrR,i,crs, nRow, nCol, cText, nOff, cColor
crs := setCursor( 0 )
IF scn_[ SCN_ROW_PREV ] == scn_[ SCN_ROW_CUR ]
dispbegin()
dispBox(scn_[SCN_ROW_CUR ],;
scn_[SCN_LEFT ],;
scn_[SCN_ROW_CUR ],;
scn_[SCN_RIGHT ],;
scn_[SCN_DRAW_FILL],;
scn_[SCN_CLR_PREV ] )
scrL := VouchWndSave(scn_[SCN_ROW_CUR],0,scn_[SCN_ROW_CUR],scn_[SCN_LEFT]-1)
IF scn_[SCN_RIGHT] < maxcol()
scrR := VouchWndSave( scn_[SCN_ROW_CUR],scn_[SCN_RIGHT]+1,scn_[SCN_ROW_CUR],maxcol() )
ENDIF
FOR i := 1 TO len(obj_)
nOff := obj_[i,OBJ_COL]+scn_[SCN_COL_DIS]
nRow := obj_[i,OBJ_ROW]+scn_[SCN_ROW_DIS]
nCol := nOff
IF obj_[i,OBJ_TYPE] == OBJ_O_BOX
DO CASE
CASE VouchInArray(obj_[i,OBJ_MDL_F_TYPE],{64,65}) // Lines V.H
@ 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 iif(scn_[SCN_OBJ_HILITE]==i,scn_[SCN_CLR_HILITE],;
'w/b' /* obj_[i,OBJ_COLOR] */)
ENDCASE
ENDIF
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 := 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] */ ))
@ nRow, nCol SAY cText COLOR cColor
ENDIF
IF obj_[i,OBJ_TYPE] == OBJ_O_TEXT
cText := obj_[i,OBJ_EQN]
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] */))
@ nRow, nCol SAY cText COLOR cColor
ENDIF
ENDIF
NEXT
scrDispSelctd(obj_,scn_) // Display Selected Screen
VouchWndRest(scrL)
IF scn_[SCN_RIGHT] < maxcol()
VouchWndRest(scrR)
ENDIF
dispEnd()
ELSE
scrMove(obj_,scn_)
ENDIF
setCursor(crs)
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrMouse( obj_, scn_, nEvent )
LOCAL nmRow, nmCol
LOCAL aEvents_:= { K_LBUTTONUP, K_LBUTTONDOWN, K_MMLEFTDOWN }
STATIC nLastCol := 0
STATIC nLastRow := 0
STATIC lAnchored := .f.
STATIC nCursor
IF !( VouchInArray( nEvent, aEvents_ ) )
RETURN .f.
ENDIF
nmRow := mRow()
nmCol := mCol()
IF nmRow < scn_[ SCN_TOP ] .OR. nmRow > scn_[ SCN_BOTTOM ] .OR. ;
nmCol < scn_[ SCN_LEFT ] .OR. nmCol > scn_[ SCN_RIGHT ]
RETURN .f.
ENDIF
scrToMouse( scn_, nmRow, nmCol )
IF nEvent == K_LDBLCLK
ELSEIF nEvent == K_MMLEFTDOWN /*K_LBUTTONDOWN */ .AND. !( lAnchored )
IF scrChkObj( obj_,scn_ ) > 0 .AND. scn_[ SCN_MODE ] <> OBJ_MODE_SELECT
nCursor := SetCursor( 0 )
lAnchored := .t.
scn_[ SCN_LASTKEY ] := K_F6
// Wvt_SetMousePos( scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] )
ENDIF
ELSEIF nEvent == K_MMLEFTDOWN .AND. lAnchored
ELSEIF nEvent == K_LBUTTONUP .AND. lAnchored
// Wvt_SetMousePos( scn_[ SCN_ROW_CUR ], scn_[ SCN_COL_CUR ] )
SetCursor( nCursor )
lAnchored := .f.
__keyboard( chr( K_ENTER ) )
ELSEIF nEvent == K_LBUTTONUP
ENDIF
RETURN .t.
//----------------------------------------------------------------------//
FUNCTION scrToMouse( scn_, nmRow, nmCol )
LOCAL nRowOff, nColOff
nRowOff := nmRow - scn_[SCN_ROW_CUR]
IF nRowOff <> 0
scn_[ SCN_ROW_CUR ] += nRowOff
scn_[ SCN_ROW_REP ] += nRowOff
ENDIF
nColOff := nmCol - scn_[ SCN_COL_CUR ]
IF nColOff <> 0
scn_[ SCN_COL_CUR ] += nColOff
scn_[ SCN_COL_REP ] += nColOff
ENDIF
RETURN NIL
//----------------------------------------------------------------------//

View File

@@ -1,923 +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"
#include "inkey.ch"
//----------------------------------------------------------------------//
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
scn_[SCN_PROPERTY] := prp_
ENDCASE
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrVvBlank()
LOCAL v_:= array( VV_INIT_VRBLS )
v_[ VV_ID ] := 'New '
v_[ VV_FIELD ] := 0
v_[ VV_F_TYPE ] := 'C'
v_[ VV_F_LEN ] := 25
v_[ VV_F_DEC ] := 0
v_[ VV_ATTRB ] := 'NONE '
v_[ VV_EQN ] := ' '
v_[ VV_PRN_LEN ] := 25
v_[ VV_F_PIC ] := ' '
v_[ VV_PITCH ] := 10
v_[ VV_FONT ] := 'COURIER '
v_[ VV_BOLD ] := .f.
v_[ VV_ITALIC ] := .f.
v_[ VV_UNDERLN ] := .f.
v_[ VV_S_SCRPT ] := .f.
v_[ VV_U_SCRPT ] := .f.
v_[ VV_HALF_H ] := .f.
v_[ VV_ALIGN ] := 'C'
v_[ VV_COLOR ] := 'W+/B '
v_[ VV_ZERO ] := .t.
v_[ VV_REPEATED ] := 'NO '
v_[ VV_VERTICLE ] := .F.
v_[ VV_WRAP_SEMI ] := .F.
v_[ VV_FOR ] := space( 80 )
v_[ VV_OBJ_UNIQUE ] := 0
v_[ VV_MDL_F_TYPE ] := 0
v_[ VV_POINT ] := 12
v_[ VV_COL_JUST ] := 0
v_[ VV_PATTERN ] := 'SOLID '
v_[ VV_BORDER ] := 0.50
RETURN v_
//----------------------------------------------------------------------//
FUNCTION scrVvSelAble( /*scn_*/ )
LOCAL sel_:= array( VV_INIT_VRBLS )
LOCAL isPrint := .f.
sel_[ VV_ID ] := .t.
sel_[ VV_FIELD ] := .f.
sel_[ VV_F_TYPE ] := .t.
sel_[ VV_F_LEN ] := .t.
sel_[ VV_F_DEC ] := .t.
sel_[ VV_ATTRB ] := .f.
sel_[ VV_EQN ] := .f.
sel_[ VV_PRN_LEN ] := .T.
sel_[ VV_F_PIC ] := .t.
sel_[ VV_PITCH ] := isPrint
sel_[ VV_FONT ] := isPrint
sel_[ VV_BOLD ] := isPrint
sel_[ VV_ITALIC ] := isPrint
sel_[ VV_UNDERLN ] := isPrint
sel_[ VV_S_SCRPT ] := .f. // isPrint
sel_[ VV_U_SCRPT ] := .f. // isPrint
sel_[ VV_HALF_H ] := isPrint
sel_[ VV_ALIGN ] := .t. // isPrint
sel_[ VV_COLOR ] := .t. // !isPrint
sel_[ VV_ZERO ] := isPrint
sel_[ VV_REPEATED ] := isPrint
sel_[ VV_VERTICLE ] := isPrint
sel_[ VV_WRAP_SEMI ] := isPrint
sel_[ VV_FOR ] := isPrint
sel_[ VV_OBJ_UNIQUE ] := .f.
sel_[ VV_MDL_F_TYPE ] := .f.
sel_[ VV_POINT ] := .T.
sel_[ VV_COL_JUST ] := .t.
sel_[ VV_PATTERN ] := .t.
sel_[ VV_BORDER ] := .f.
RETURN sel_
//----------------------------------------------------------------------//
FUNCTION scrVv2Obj( v_,o_ )
o_[ OBJ_ID ] := v_[ VV_ID ]
o_[ OBJ_FIELD ] := v_[ VV_FIELD ]
o_[ OBJ_F_TYPE ] := v_[ VV_F_TYPE ]
o_[ OBJ_F_LEN ] := v_[ VV_F_LEN ]
o_[ OBJ_F_DEC ] := v_[ VV_F_DEC ]
o_[ OBJ_ATTRB ] := v_[ VV_ATTRB ]
o_[ OBJ_EQN ] := v_[ VV_EQN ]
o_[ OBJ_PRN_LEN ] := v_[ VV_PRN_LEN ]
o_[ OBJ_F_PIC ] := v_[ VV_F_PIC ]
o_[ OBJ_PITCH ] := v_[ VV_PITCH ]
o_[ OBJ_FONT ] := v_[ VV_FONT ]
o_[ OBJ_BOLD ] := v_[ VV_BOLD ]
o_[ OBJ_ITALIC ] := v_[ VV_ITALIC ]
o_[ OBJ_UNDERLN ] := v_[ VV_UNDERLN ]
o_[ OBJ_S_SCRPT ] := v_[ VV_S_SCRPT ]
o_[ OBJ_U_SCRPT ] := v_[ VV_U_SCRPT ]
o_[ OBJ_HALF_H ] := v_[ VV_HALF_H ]
o_[ OBJ_ALIGN ] := v_[ VV_ALIGN ]
o_[ OBJ_COLOR ] := v_[ VV_COLOR ]
o_[ OBJ_ZERO ] := v_[ VV_ZERO ]
o_[ OBJ_REPEATED ] := v_[ VV_REPEATED ]
o_[ OBJ_VERTICLE ] := v_[ VV_VERTICLE ]
o_[ OBJ_WRAP_SEMI ] := v_[ VV_WRAP_SEMI ]
o_[ OBJ_FOR ] := v_[ VV_FOR ]
o_[ OBJ_OBJ_UNIQUE ] := v_[ VV_OBJ_UNIQUE ]
o_[ OBJ_MDL_F_TYPE ] := v_[ VV_MDL_F_TYPE ]
o_[ OBJ_POINT ] := v_[ VV_POINT ]
o_[ OBJ_COL_JUST ] := v_[ VV_COL_JUST ]
o_[ OBJ_PATTERN ] := v_[ VV_PATTERN ]
o_[ OBJ_BORDER ] := v_[ VV_BORDER ]
RETURN o_
//----------------------------------------------------------------------//
FUNCTION scrObj2Vv( o_ )
LOCAL v_:={}
aadd( v_, pad( o_[OBJ_ID ],15 ) )
aadd( v_, o_[ OBJ_FIELD ] )
aadd( v_, o_[ OBJ_F_TYPE ] )
aadd( v_, o_[ OBJ_F_LEN ] )
aadd( v_, o_[ OBJ_F_DEC ] )
aadd( v_, o_[ OBJ_ATTRB ] )
aadd( v_, o_[ OBJ_EQN ] )
aadd( v_, o_[ OBJ_PRN_LEN ] )
aadd( v_, o_[ OBJ_F_PIC ] )
aadd( v_, o_[ OBJ_PITCH ] )
aadd( v_, o_[ OBJ_FONT ] )
aadd( v_, o_[ OBJ_BOLD ] )
aadd( v_, o_[ OBJ_ITALIC ] )
aadd( v_, o_[ OBJ_UNDERLN ] )
aadd( v_, o_[ OBJ_S_SCRPT ] )
aadd( v_, o_[ OBJ_U_SCRPT ] )
aadd( v_, o_[ OBJ_HALF_H ] )
aadd( v_, o_[ OBJ_ALIGN ] )
aadd( v_, o_[ OBJ_COLOR ] )
aadd( v_, o_[ OBJ_ZERO ] )
aadd( v_, o_[ OBJ_REPEATED ] )
aadd( v_, o_[ OBJ_VERTICLE ] )
aadd( v_, o_[ OBJ_WRAP_SEMI ] )
aadd( v_, o_[ OBJ_FOR ] )
aadd( v_, o_[ OBJ_OBJ_UNIQUE ] )
aadd( v_, o_[ OBJ_MDL_F_TYPE ] )
aadd( v_, o_[ OBJ_POINT ] )
aadd( v_, o_[ OBJ_COL_JUST ] )
aadd( v_, o_[ OBJ_PATTERN ] )
aadd( v_, o_[ OBJ_BORDER ] )
RETURN v_
//----------------------------------------------------------------------//
FUNCTION scrStr2Obj( s )
LOCAL obj_:= scrObjBlank()
obj_[ OBJ_TYPE ] := val( substr( s, OBJ_OS_TYPE, OBJ_LEN_TYPE ) )
obj_[ OBJ_ROW ] := val( substr( s, OBJ_OS_ROW, OBJ_LEN_ROW ) )
obj_[ OBJ_COL ] := val( substr( s, OBJ_OS_COL, OBJ_LEN_COL ) )
obj_[ OBJ_TEXT ] := substr( s, OBJ_OS_TEXT, OBJ_LEN_TEXT )
obj_[ OBJ_COLOR ] := substr( s, OBJ_OS_COLOR, OBJ_LEN_COLOR )
obj_[ OBJ_TO_ROW ] := val( substr( s, OBJ_OS_TO_ROW, OBJ_LEN_TO_ROW ) )
obj_[ OBJ_TO_COL ] := val( substr( s, OBJ_OS_TO_COL, OBJ_LEN_TO_COL ) )
obj_[ OBJ_ID ] := substr( s, OBJ_OS_ID, OBJ_LEN_ID )
obj_[ OBJ_SECTION ] := val( substr( s, OBJ_OS_SECTION, OBJ_LEN_SECTION ) )
obj_[ OBJ_ALIAS ] := substr( s, OBJ_OS_ALIAS, OBJ_LEN_ALIAS )
obj_[ OBJ_FIELD ] := val( substr( s, OBJ_OS_FIELD, OBJ_LEN_FIELD ) )
obj_[ OBJ_EQN ] := substr( s, OBJ_OS_EQN, OBJ_LEN_EQN )
obj_[ OBJ_F_TYPE ] := substr( s, OBJ_OS_F_TYPE, OBJ_LEN_F_TYPE )
obj_[ OBJ_F_LEN ] := val( substr( s, OBJ_OS_F_LEN, OBJ_LEN_F_LEN ) )
obj_[ OBJ_F_DEC ] := val( substr( s, OBJ_OS_F_DEC, OBJ_LEN_F_DEC ) )
obj_[ OBJ_F_PIC ] := substr( s, OBJ_OS_F_PIC, OBJ_LEN_F_PIC )
obj_[ OBJ_ALIGN ] := substr( s, OBJ_OS_ALIGN, OBJ_LEN_ALIGN )
obj_[ OBJ_PITCH ] := val( substr( s, OBJ_OS_PITCH, OBJ_LEN_PITCH ) )
obj_[ OBJ_FONT ] := substr( s, OBJ_OS_FONT, OBJ_LEN_FONT )
obj_[ OBJ_BOLD ] := substr( s, OBJ_OS_BOLD, OBJ_LEN_BOLD ) == 'T'
obj_[ OBJ_ITALIC ] := substr( s, OBJ_OS_ITALIC, OBJ_LEN_ITALIC ) == 'T'
obj_[ OBJ_UNDERLN ] := substr( s, OBJ_OS_UNDERLN, OBJ_LEN_UNDERLN ) == 'T'
obj_[ OBJ_S_SCRPT ] := substr( s, OBJ_OS_S_SCRPT, OBJ_LEN_S_SCRPT ) == 'T'
obj_[ OBJ_U_SCRPT ] := substr( s, OBJ_OS_U_SCRPT, OBJ_LEN_U_SCRPT ) == 'T'
obj_[ OBJ_HALF_H ] := substr( s, OBJ_OS_HALF_H, OBJ_LEN_HALF_H ) == 'T'
obj_[ OBJ_PRN_LEN ] := val( substr( s, OBJ_OS_PRN_LEN, OBJ_LEN_PRN_LEN ) )
obj_[ OBJ_ZERO ] := substr( s, OBJ_OS_ZERO , OBJ_LEN_ZERO ) == 'T'
obj_[ OBJ_REPEATED ] := substr( s, OBJ_OS_REPEATED, OBJ_LEN_REPEATED )
obj_[ OBJ_VERTICLE ] := substr( s, OBJ_OS_VERTICLE, OBJ_LEN_VERTICLE ) == 'T'
obj_[ OBJ_WRAP_SEMI ] := substr( s, OBJ_OS_WRAP_SEMI, OBJ_LEN_WRAP_SEMI ) == 'T'
obj_[ OBJ_FOR ] := substr( s, OBJ_OS_FOR, OBJ_LEN_FOR )
obj_[ OBJ_SEC_ROW ] := val( substr( s, OBJ_OS_SEC_ROW, OBJ_LEN_SEC_ROW ) )
obj_[ OBJ_ATTRB ] := substr( s, OBJ_OS_ATTRB, OBJ_LEN_ATTRB )
obj_[ OBJ_VAL ] := substr( s, OBJ_OS_VAL, OBJ_LEN_VAL )
obj_[ OBJ_OBJ_UNIQUE ] := val( substr( s, OBJ_OS_OBJ_UNIQUE, OBJ_LEN_OBJ_UNIQUE ) )
obj_[ OBJ_MDL_F_TYPE ] := val( substr( s, OBJ_OS_MDL_F_TYPE, OBJ_LEN_MDL_F_TYPE ) )
obj_[ OBJ_POINT ] := val( substr( s, OBJ_OS_POINT, OBJ_LEN_POINT ) )
obj_[ OBJ_COL_JUST ] := val( substr( s, OBJ_OS_COL_JUST, OBJ_LEN_COL_JUST ) )
obj_[ OBJ_PATTERN ] := substr( s, OBJ_OS_PATTERN, OBJ_LEN_PATTERN )
obj_[ OBJ_BORDER ] := val( substr( s, OBJ_OS_BORDER, OBJ_LEN_BORDER ) )
obj_[OBJ_TEXT ] := padc( alltrim( obj_[OBJ_TEXT] ),obj_[OBJ_F_LEN] )
obj_[OBJ_EQN ] := iif( obj_[ OBJ_TYPE ] == OBJ_O_TEXT, substr( obj_[ OBJ_EQN ], 1,;
obj_[ OBJ_TO_COL ] - obj_[ OBJ_COL ] + 1 ), obj_[ OBJ_EQN ] )
RETURN obj_
//----------------------------------------------------------------------//
FUNCTION scrObj2str( obj_ )
LOCAL s := ;
str( obj_[ OBJ_TYPE ], OBJ_LEN_TYPE ) + ;
str( obj_[ OBJ_ROW ], OBJ_LEN_ROW ) + ;
str( obj_[ OBJ_COL ], OBJ_LEN_COL ) + ;
pad( alltrim( obj_[ OBJ_TEXT ] ), OBJ_LEN_TEXT ) + ;
pad( obj_[ OBJ_COLOR ], OBJ_LEN_COLOR ) + ;
str( obj_[ OBJ_TO_ROW ], OBJ_LEN_TO_ROW ) + ;
str( obj_[ OBJ_TO_COL ], OBJ_LEN_TO_COL ) + ;
pad( obj_[ OBJ_ID ], OBJ_LEN_ID ) + ;
str( obj_[ OBJ_SECTION ], OBJ_LEN_SECTION ) + ;
pad( obj_[ OBJ_ALIAS ], OBJ_LEN_ALIAS ) + ;
str( obj_[ OBJ_FIELD ], OBJ_LEN_FIELD ) + ;
pad( obj_[ OBJ_EQN ], OBJ_LEN_EQN ) + ;
pad( obj_[ OBJ_F_TYPE ], OBJ_LEN_F_TYPE ) + ;
str( obj_[ OBJ_F_LEN ], OBJ_LEN_F_LEN ) + ;
str( obj_[ OBJ_F_DEC ], OBJ_LEN_F_DEC ) + ;
pad( obj_[ OBJ_F_PIC ], OBJ_LEN_F_PIC ) + ;
pad( obj_[ OBJ_ALIGN ], OBJ_LEN_ALIGN ) + ;
str( obj_[ OBJ_PITCH ], OBJ_LEN_PITCH ) + ;
pad( obj_[ OBJ_FONT ], OBJ_LEN_FONT ) + ;
iif( obj_[ OBJ_BOLD ], 'T', 'F' ) + ;
iif( obj_[ OBJ_ITALIC ], 'T', 'F' ) + ;
iif( obj_[ OBJ_UNDERLN ], 'T', 'F' ) + ;
iif( obj_[ OBJ_S_SCRPT ], 'T', 'F' ) + ;
iif( obj_[ OBJ_U_SCRPT ], 'T', 'F' ) + ;
iif( obj_[ OBJ_HALF_H ], 'T', 'F' ) + ;
str( obj_[ OBJ_PRN_LEN ], OBJ_LEN_PRN_LEN ) + ;
iif( obj_[ OBJ_ZERO ], 'T', 'F' ) + ;
pad( obj_[ OBJ_REPEATED ], OBJ_LEN_REPEATED ) + ;
iif( obj_[ OBJ_VERTICLE ], 'T', 'F' ) + ;
iif( obj_[ OBJ_WRAP_SEMI ], 'T', 'F' ) + ;
pad( obj_[ OBJ_FOR ], OBJ_LEN_FOR ) + ;
str( obj_[ OBJ_SEC_ROW ], OBJ_LEN_SEC_ROW ) + ;
pad( obj_[ OBJ_ATTRB ], OBJ_LEN_ATTRB ) + ;
pad( obj_[ OBJ_VAL ], OBJ_LEN_VAL ) + ;
str( obj_[ OBJ_OBJ_UNIQUE ], OBJ_LEN_OBJ_UNIQUE ) + ;
str( obj_[ OBJ_MDL_F_TYPE ], OBJ_LEN_MDL_F_TYPE ) + ;
str( obj_[ OBJ_POINT ], OBJ_LEN_POINT ) + ;
str( obj_[ OBJ_COL_JUST ], OBJ_LEN_COL_JUST ) + ;
pad( obj_[ OBJ_PATTERN ], OBJ_LEN_PATTERN ) + ;
str( obj_[ OBJ_BORDER ], OBJ_LEN_BORDER, 2 )
RETURN pad( s,490 ) // 10 FOR Random, 500 FOR attr
//----------------------------------------------------------------------//
FUNCTION scrObjBlank()
LOCAL o_:= array( OBJ_INIT_VRBLS )
o_[ OBJ_TYPE ] := 0
o_[ OBJ_ROW ] := 0
o_[ OBJ_COL ] := 0
o_[ OBJ_TEXT ] := ''
o_[ OBJ_COLOR ] := 'W/B '
o_[ OBJ_TO_ROW ] := 0
o_[ OBJ_TO_COL ] := 0
o_[ OBJ_ID ] := ''
o_[ OBJ_SECTION ] := 1
o_[ OBJ_ALIAS ] := ''
o_[ OBJ_FIELD ] := 0
o_[ OBJ_EQN ] := ''
o_[ OBJ_F_TYPE ] := ''
o_[ OBJ_F_LEN ] := 0
o_[ OBJ_F_DEC ] := 0
o_[ OBJ_F_PIC ] := ''
o_[ OBJ_ALIGN ] := 'L'
o_[ OBJ_PITCH ] := 10
o_[ OBJ_FONT ] := 'COURIER '
o_[ OBJ_BOLD ] := .F.
o_[ OBJ_ITALIC ] := .F.
o_[ OBJ_UNDERLN ] := .F.
o_[ OBJ_S_SCRPT ] := .F.
o_[ OBJ_U_SCRPT ] := .F.
o_[ OBJ_PRN_LEN ] := 0
o_[ OBJ_HALF_H ] := .F.
o_[ OBJ_ZERO ] := .T.
o_[ OBJ_REPEATED ] := 'NO '
o_[ OBJ_VERTICLE ] := .F.
o_[ OBJ_WRAP_SEMI ] := .F.
o_[ OBJ_FOR ] := space( 80 )
o_[ OBJ_SEC_ROW ] := 0
o_[ OBJ_ATTRB ] := 'NONE '
o_[ OBJ_VAL ] := ' '
o_[ OBJ_OBJ_UNIQUE ] := 0
o_[ OBJ_MDL_F_TYPE ] := 0
o_[ OBJ_POINT ] := 0
o_[ OBJ_COL_JUST ] := 0
o_[ OBJ_PATTERN ] := 'SOLID '
o_[ OBJ_BORDER ] := 0.50
RETURN o_
//----------------------------------------------------------------------//
FUNCTION scrScn2obj( scn_,nType )
LOCAL obj_:={}
DEFAULT nType TO 0
aeval( scn_,{|e_| iif( e_[2] == nType, aadd( obj_,scrStr2Obj( e_[3] ) ), '' ) } )
RETURN obj_
//----------------------------------------------------------------------//
#IF 0
FUNCTION scrClrFrBk( cClr )
LOCAL nClrF, nClrB,cFr,cBk,n
LOCAL pal_:={'W','N','N+','N++','BG','G','R','RB','GR',;
'B','GR+','W+','B+','R+','BG+','G+','RB+','X'}
LOCAL mnu_:= ;
{'White', 'Black', 'Grey','Pale Grey','Baige', 'Green', 'Red',;
'Magenta', 'Brown', 'Blue', 'Yellow','Bright White',;
'Bright Blue', 'Bright Red', 'Bright Baige',;
'Bright Green', 'Bright Magenta','None'}
cClr := iif( empty( cClr ),'W/B',alltrim( upper( cClr ) ) )
IF( n := at( '/',cClr ) )==0
RETURN pad( cClr,7 )
ENDIF
cFr := substr( cClr,1,n-1 )
cBk := substr( cClr,n+1 )
nClrF := ascan( pal_,{|e| e == cFr} )
nClrB := ascan( pal_,{|e| e == cBk} )
B_MSG 'ForeGround Color' ;
CHOOSE mnu_ RESTORE SHADOW CENTER INTO nClrF INITIAL nClrF
IF nClrF == 0
RETURN space( 7 )
ENDIF
B_MSG 'BackGround Color' ;
CHOOSE mnu_ RESTORE SHADOW CENTER INTO nClrB INITIAL nClrB
IF nClrB == 0
RETURN space( 7 )
ENDIF
RETURN pad( pal_[nClrF]+'/'+pal_[nClrB],7 )
#ENDIF
//----------------------------------------------------------------------//
FUNCTION scrSecCur( scn_, nRepRow ) // Numeric id of sector
LOCAL n,i
n := 0
FOR i := 1 TO len( scn_[ SCN_SECTORS_ ] )
n += scn_[ SCN_SECTORS_, i, SCT_ROWS ]
IF nRepRow <= n
// n1 := i
EXIT
ENDIF
NEXT
RETURN scn_[ SCN_SECTORS_, i, SCT_ORDER ]
//----------------------------------------------------------------------//
FUNCTION scrSecOrd( scn_, nRepRow ) // Index of sector
LOCAL n,n1,i
n := 0
FOR i := 1 TO len( scn_[ SCN_SECTORS_ ] )
n += scn_[ SCN_SECTORS_, i, SCT_ROWS ]
IF nRepRow <= n
n1 := i
EXIT
ENDIF
NEXT
RETURN n1
//----------------------------------------------------------------------//
/* Sector wise row position */
FUNCTION scrSecRow( scn_,nRepRow )
LOCAL n,n1,i
n := 0 ; n1 := 0
FOR i := 1 TO len( scn_[ SCN_SECTORS_ ] )
n += scn_[ SCN_SECTORS_, i, SCT_ROWS ]
IF nRepRow <= n
n1 := nRepRow -( n - scn_[ SCN_SECTORS_, i, SCT_ROWS ] )
EXIT
ENDIF
NEXT
RETURN n1
//----------------------------------------------------------------------//
FUNCTION scrMsg( msg )
LOCAL row := row(), col := col()
@ maxrow(),0 SAY padc( " ", maxcol()+1 ) COLOR "W+/W"
IF empty( msg )
msg := "F1 Help F5 Edit F6 Select F7 Copy F8 Paste F9 Box F10 Field"
ENDIF
msg := " " + msg + " "
@ maxrow(),( maxcol()+1-len( msg ) )/2 SAY msg COLOR "W+/B"
setPos( row,col )
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrInkey( key_ )
LOCAL nKey
DO WHILE .t.
nKey := inkey( 0 )
IF ascan( key_, nKey ) > 0
EXIT
ENDIF
ENDDO
RETURN nKey
//----------------------------------------------------------------------//
FUNCTION scrConfig( obj_, nDgn, sct_ )
LOCAL s, n, nRows, nCols
LOCAL cor_:={ { 1, 0, maxrow()-2, maxcol(), 200, 400 } }
LOCAL scn_:= array( SCN_NUM_VAR )
scn_[ SCN_SECTORS_ ] := {}
scn_[ SCN_DESIGN ] := nDgn
scn_[ SCN_FOR_ROWS ] := { { 0,'' } }
nRows := scrSectors( obj_, scn_, nDgn, sct_ )
nCols := 0
aeval( obj_, {|e_| nCols := max( nCols, e_[ OBJ_TO_COL ] ) } )
nCols := iif( nCols == 0, cor_[ nDgn,4 ], nCols )
scn_[ SCN_TOP ] := cor_[ nDgn,1 ]
scn_[ SCN_LEFT ] := cor_[ nDgn,2 ]
scn_[ SCN_BOTTOM ] := cor_[ nDgn,3 ]
scn_[ SCN_RIGHT ] := cor_[ nDgn,4 ]
scn_[ SCN_MODE ] := 0
scn_[ SCN_ROW_CUR ] := scn_[ SCN_TOP ] // 9
scn_[ SCN_COL_CUR ] := scn_[ SCN_LEFT ]
scn_[ SCN_ROW_REP ] := 1
scn_[ SCN_COL_REP ] := 1
scn_[ SCN_ROW_DIS ] := scn_[ SCN_TOP ]-1
scn_[ SCN_COL_DIS ] := scn_[ SCN_LEFT ]-1
scn_[ SCN_ROW_MENU ] := 0
scn_[ SCN_ROW_RULER ] := 0
scn_[ SCN_STATUS_ROW ] := maxrow()-1
scn_[ SCN_STATUS_COL ] := 0
scn_[ SCN_STATUS_COL_TO] := maxcol()
scn_[ SCN_COL_MAX ] := iif( nDgn==DGN_SCREEN .OR. nDgn==DGN_MODULE, cor_[nDgn,6], nCols )
scn_[ SCN_ROW_PREV ] := scn_[ SCN_TOP ]
scn_[ SCN_COL_PREV ] := scn_[ SCN_LEFT ]
scn_[ SCN_REP_LINES ] := iif( nDgn==DGN_SCREEN .OR. nDgn==DGN_MODULE, cor_[ nDgn,5 ], nRows )
scn_[ SCN_CLR_STATUS ] := "W+/BG"
scn_[ SCN_CLR_TEXT ] := 'W+/B'
scn_[ SCN_CLR_BOX ] := 'W/B'
scn_[ SCN_CLR_FIELD ] := CLR_GET
scn_[ SCN_CLR_HILITE ] := iif( wvt(),'N/GR*','GR+/BG' )
scn_[ SCN_CLR_WINDOW ] := 'W+/BG'
scn_[ SCN_CLR_RULER ] := "N/W"
scn_[ SCN_CLR_MENU ] := "W+/B"
scn_[ SCN_CLR_OVERALL ] := "N/W"
scn_[ SCN_CLR_PREV ] := iif( wvt(), 'B/W' , 'B/W' )
scn_[ SCN_CLR_SELECT ] := iif( wvt(), 'N/W*', 'GR+/N' )
scn_[ SCN_OBJ_HILITE ] := 0 // 32
scn_[ SCN_OBJ_SELECTED ] := 0 // 33
s := '.'
FOR n := 1 TO 40
s += '.......' + strtran( str( n,3 ), ' ', '.' )
NEXT
scn_[ SCN_RULER ] := s
scn_[ SCN_DRAW_FILL ] := '±±±±±±±±±'
scn_[ SCN_OBJ_ID_ ] := { 'Bitmap','Line','Text','Field','Expression','BitMap' }
scn_[ SCN_REFRESH ] := OBJ_REFRESH_ALL
scn_[ SCN_OBJ_COPIED ] := 0
scn_[ SCN_BOX_SHAPE ] := 'ÚÄ¿³ÙÄÀ³'
scn_[ SCN_CHR_PREV ] := ''
scn_[ SCN_DESIGN_ID ] := "Module"
scn_[ SCN_FILE ] := "Untitled"
scn_[ SCN_PROPERTY ] := {}
scn_[ SCN_GRAPHICS ] := .f.
scn_[ SCN_TEXT_BLOCK_ ] := {}
scn_[ SCN_FIELDS ] := {}
scn_[ SCN_LASTKEY ] := 0
RETURN scn_
//----------------------------------------------------------------------//
FUNCTION scrWvtConfig( obj_, scn_ )
LOCAL nRows,nCols
LOCAL cor_:={ { 1, 0, maxrow()-2, maxcol(), 200, 400 } }
LOCAL nDgn := scn_[ SCN_DESIGN ]
nRows := 0
aeval( scn_[ SCN_SECTORS_ ], {|e_| nRows += e_[ SCT_ROWS ] } )
nCols := 0
aeval( obj_, {|e_| nCols := max( nCols,e_[ OBJ_TO_COL ] ) } )
nCols := iif( nCols == 0, cor_[ nDgn,4 ], nCols )
scn_[ SCN_TOP ] := cor_[ nDgn,1 ]
scn_[ SCN_LEFT ] := cor_[ nDgn,2 ]
scn_[ SCN_BOTTOM ] := cor_[ nDgn,3 ]
scn_[ SCN_RIGHT ] := cor_[ nDgn,4 ]
scn_[ SCN_STATUS_ROW ] := maxrow()-1
scn_[ SCN_STATUS_COL ] := 0
scn_[ SCN_STATUS_COL_TO ] := maxcol()
scn_[ SCN_MODE ] := 0
scn_[ SCN_ROW_CUR ] := scn_[ SCN_TOP ]
scn_[ SCN_COL_CUR ] := scn_[ SCN_LEFT ]
scn_[ SCN_ROW_REP ] := 1
scn_[ SCN_COL_REP ] := 1
scn_[ SCN_ROW_DIS ] := scn_[ SCN_TOP ]-1
scn_[ SCN_COL_DIS ] := scn_[ SCN_LEFT ]-1
scn_[ SCN_ROW_RULER ] := 0
scn_[ SCN_ROW_MENU ] := 0
scn_[ SCN_COL_MAX ] := cor_[ nDgn, 6 ]
scn_[ SCN_ROW_PREV ] := scn_[ SCN_TOP ]
scn_[ SCN_COL_PREV ] := scn_[ SCN_LEFT ]
scn_[ SCN_REP_LINES ] := cor_[ nDgn, 5 ]
RETURN NIL
//----------------------------------------------------------------------//
STATIC FUNCTION scrSectors( obj_, scn_, nDgn /*,sct_*/ )
HB_SYMBOL_UNUSED( obj_ )
IF nDgn == DGN_MODULE .OR. nDgn == DGN_SCREEN
aadd( scn_[ SCN_SECTORS_ ], { 1,'Screen', 'R ', 100, 'w+/bg', '', .f., .f. } )
ENDIF
RETURN 100
//----------------------------------------------------------------------//
STATIC FUNCTION scrAddPrp( scn_, sct_ )
aadd( scn_[SCN_SECTORS_], ;
{ sct_[1], sct_[2], sct_[3], sct_[4], sct_[5], sct_[6], sct_[7], sct_[8] } )
RETURN NIL
//----------------------------------------------------------------------//
FUNCTION scrPicture( cType,nWidth,nDec,cPic,nScrWid )
DO CASE
CASE cType == 'N'
cPic := '@Z ' + replicate( '9', nScrWid - iif( nDec > 0, nDec + 1, 0 ) ) + ;
iif( nDec > 0, '.' + replicate( "9", nDec ), "" )
CASE cType == 'C'
IF nScrWid <> nWidth
cPic := '@' + iif( '!' $ cPic,'!','' ) + 'S' + NTRIM( nScrWid )
ENDIF
ENDCASE
RETURN cPic
//----------------------------------------------------------------------//

View File

@@ -94,129 +94,6 @@ THREAD STATIC s_vid_stk := ""
//----------------------------------------------------------------------//
FUNCTION scrField( nObj, nFldExp, obj_, scn_, v_, sel_, cColor )
LOCAL h_:={},w_:={},o_
DEFAULT cColor TO scn_[ SCN_CLR_FIELD ]
DEFAULT sel_ TO scrVvSelAble()
IF nObj == 0
o_:= scrObjBlank()
DEFAULT v_ TO scrVvBlank()
ELSE
o_:= obj_[ nObj ]
IF v_ == NIL .OR. empty( v_ )
v_:= scrObj2Vv( o_ )
ENDIF
ENDIF
aadd( h_, ' Title ' )
aadd( h_, ' Field ' )
aadd( h_, ' Type ' )
aadd( h_, ' Width ' )
aadd( h_, ' Decimals ' )
aadd( h_, ' Calculate ' )
aadd( h_, ' Expression ' )
aadd( h_, ' Printed Width ' )
aadd( h_, ' Picture ' )
aadd( h_, ' Pitch ' )
aadd( h_, ' Font ' )
aadd( h_, ' Bold ' )
aadd( h_, ' Italics ' )
aadd( h_, ' UnderLine ' )
aadd( h_, ' SuperScript ' )
aadd( h_, ' SubScript ' )
aadd( h_, ' Half Height ' )
aadd( h_, ' Alignment ' )
aadd( h_, ' Color ' )
aadd( h_, ' Zero as Blank ' )
aadd( h_, ' Supress Repeated Values ' )
aadd( h_, ' Verticle Stretch ' )
aadd( h_, ' Wrap Semi Colons ' )
aadd( h_, ' The FOR Condition ' )
aadd( h_, ' Unique Id ' )
aadd( h_, ' Field Type . Module ' )
aadd( h_, ' Point Size ' )
aadd( h_, ' Column FOR Justification ' )
aadd( h_, ' Pattern TO fill a frame ' )
aadd( h_, ' Border Thickness ' )
aadd( w_, {| |.t. } )
aadd( w_, {| |.t. } )
aadd( w_, {| | VouchMenuM( 'MN_TYFLD' ) } )
aadd( w_, {|v| v := oAchGet( 3 ),iif( v=='D',!oCPut( 8 ),iif( v=='L',!oCPut( 1 ),.t. ) ) } )
aadd( w_, {|v| v := oAchGet( 3 ),iif( v<>'N',!oCPut( 0 ),.t. ) } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .t. } )
aadd( w_, {| | .t. } )
aadd( w_, {| | .t. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .t. } )
aadd( w_, {| | .t. } )
aadd( w_, {| | .f. } )
aadd( w_, {| | .f. } )
B_GETS HEADERS h_ VALUES v_ ;
TITLE 'Configure '+ iif( nFldExp==1,'Field',iif( nFldExp==2,'Expression',iif( nFldexp==3,'Text','OBJECT' ) ) ) ;
INTO v_ WHEN w_ SELECTABLES sel_
v_:= v_[ 1 ]
v_[ 1 ] := alltrim( trim( v_[ 1 ] ) )
IF empty( v_[ 1 ] )
RETURN NIL
ENDIF
IF lastkey() <> K_ESC
o_:= scrVv2Obj( v_,o_ )
o_[OBJ_TYPE] := iif( nFldExp == 1, OBJ_O_FIELD,;
iif( nFldExp == 2, OBJ_O_EXP,;
iif( nFldExp == 3, OBJ_O_TEXT,;
iif( nFldExp == 4, OBJ_O_BOX, ;
OBJ_O_FIELD ) ) ) )
IF o_[ OBJ_TYPE ] == OBJ_O_FIELD
o_[ OBJ_ROW ] := iif( nObj == 0, scn_[ SCN_ROW_REP ], o_[ OBJ_ROW ] )
o_[ OBJ_COL ] := iif( nObj == 0, scn_[ SCN_COL_REP ], o_[ OBJ_COL ] )
o_[ OBJ_TEXT ] := padc( alltrim( v_[ VV_ID ] ), v_[ VV_F_LEN ] )
o_[ OBJ_COLOR ] := iif( empty( o_[ OBJ_COLOR ] ), cColor, o_[ OBJ_COLOR ] )
o_[ OBJ_TO_ROW ] := iif( nObj == 0, scn_[ SCN_ROW_REP ], o_[ OBJ_TO_ROW ] )
o_[ OBJ_TO_COL ] := iif( nObj == 0, scn_[ SCN_COL_REP ], o_[ OBJ_COL ] ) + v_[ VV_F_LEN ] - 1
ENDIF
o_[OBJ_SECTION] := scrSecCur( scn_,scn_[SCN_ROW_REP] )
IF nObj == 0
aadd( obj_,o_ )
nObj := len( obj_ )
ELSE
obj_[nObj] := o_
ENDIF
scn_[SCN_OBJ_SELECTED] := 0
scn_[SCN_REFRESH] := OBJ_REFRESH_LINE
scn_[SCN_MODE] := 0
ENDIF
RETURN nObj
//----------------------------------------------------------------------//
FUNCTION VouchInRange( v, r1, r2 )
RETURN ( v >= r1 .AND. v <= r2 )
@@ -583,7 +460,7 @@ STATIC FUNCTION vld()
//----------------------------------------------------------------------//
STATIC FUNCTION oAchGet( n )
FUNCTION oAchGet( n )
RETURN setGetAch()[n]
//----------------------------------------------------------------------//
@@ -594,7 +471,7 @@ STATIC FUNCTION oAchPut( n,v )
//----------------------------------------------------------------------//
STATIC FUNCTION oCPut( v )
FUNCTION oCPut( v )
getactive():varPut( v )
RETURN .t.

View File

@@ -69,10 +69,6 @@
#define __HBEDCUI_CH
#define THE_FILL 'ø'
#define CLR_GET 'W+/W'
#define CLR_BOX 'W+/B'
#define OBJ_CLR_FIELD 'W+/W'
#define OBJ_TYPE 1 // N 1
#define OBJ_ROW 2 // N 3
@@ -118,21 +114,6 @@
#define OBJ_INIT_VRBLS 40
// Run time addresses
#define OBJ_PRINT 4
#define OBJ_SECTOR 9
#define OBJ_UNIQUE 32
#define CAL_UNIQUE 1
#define CAL_SECTOR 2
#define CAL_OBJ 3
#define CAL_ATTRB 4
#define CAL_NONE 5
#define CAL_COUNT 6
#define CAL_SUM 7
#define CAL_AVERAGE 8
#define CAL_HIGHEST 9
#define CAL_LOWEST 10
#define OBJ_LEN_TYPE 1
#define OBJ_LEN_ROW 3
#define OBJ_LEN_COL 3
@@ -331,142 +312,6 @@
#define SCN_NUM_VAR 55
#define REP_DESC 1 // C 70
#define REP_TYPE 2 // N 3
#define REP_IDX_NO 3 // N 3
#define REP_IDX_EXP 4 // C 240
#define REP_PG_SIZE 5 // C 12
#define REP_PG_LEN 6 // N 5
#define REP_PG_WID 7 // N 5
#define REP_LINES 8 // N 2
#define REP_MG_TOP 9 // N 3
#define REP_MG_LEFT 10 // N 3
#define REP_MG_BOTTOM 11 // N 3
#define REP_EJ_BEFORE 12 // L 1
#define REP_EJ_AFTER 13 // L 1
#define REP_PLAIN 14 // N 2
#define REP_FTR_PAG 15 // L 1
#define REP_SMR_NEXT 16 // L 1
#define REP_HDR_PAGES 17 // C 10
#define REP_BNK_LINES 18 // N 3
#define REP_BNK_AFTER 19 // N 3
#define REP_DATA_BOX 20 // L 1
#define REP_FILE 21 // C 80
#define REP_COPIES 22 // N 3
#define REP_TTL_PAGES 23 // C 10
#define REP_INIT_CPI 24 // N 2
#define REP_PRN_QLY 25 // C 1
#define REP_RECONFIRM 26 // L 1
#define REP_FTR_BOTTOM 27 // L 1
#define REP_HTML 28 // L 1
#define REP_PRINTER 29 // C 7
#define REP_ORIENT 30 // C 1
#define REP_PREVIEW 31 // L 1
#define REP_GRAY 32 // L 1
#define REP_WINDLG 33 // L 1
#define REP_DUPLEX 34 // N 1
#define REP_COLS 35 // N 3
#define REP_ROWS 36 // N 3
#define REP_FOR 37 // C 240
#define REP_WHILE 38 // C 125
#define REP_FIRST 39 // C 125
#define REP_EXE_PRE 40 // C 245
#define REP_EXE_POST 41 // C 245
#define REP_INIT_VRBLS 41
#define REP_LEN_DESC 70
#define REP_LEN_TYPE 3
#define REP_LEN_IDX_NO 3
#define REP_LEN_IDX_EXP 240
#define REP_LEN_PG_SIZE 12
#define REP_LEN_PG_LEN 5
#define REP_LEN_PG_WID 5
#define REP_LEN_LINES 2
#define REP_LEN_MG_TOP 3
#define REP_LEN_MG_LEFT 3
#define REP_LEN_MG_BOTTOM 3
#define REP_LEN_EJ_BEFORE 1
#define REP_LEN_EJ_AFTER 1
#define REP_LEN_PLAIN 2
#define REP_LEN_FTR_PAG 1
#define REP_LEN_SMR_NEXT 1
#define REP_LEN_HDR_PAGES 10
#define REP_LEN_BNK_LINES 3
#define REP_LEN_BNK_AFTER 3
#define REP_LEN_DATA_BOX 1
#define REP_LEN_FILE 80
#define REP_LEN_COPIES 3
#define REP_LEN_TTL_PAGES 10
#define REP_LEN_INIT_CPI 2
#define REP_LEN_PRN_QLY 1
#define REP_LEN_RECONFIRM 1
#define REP_LEN_FTR_BOTTOM 1
#define REP_LEN_HTML 1
#define REP_LEN_PRINTER 7
#define REP_LEN_ORIENT 1
#define REP_LEN_PREVIEW 1
#define REP_LEN_GRAY 1
#define REP_LEN_WINDLG 1
#define REP_LEN_DUPLEX 1
#define REP_LEN_COLS 3
#define REP_LEN_ROWS 3
#define REP_LEN_FOR 240
#define REP_LEN_WHILE 125
#define REP_LEN_FIRST 125
#define REP_LEN_EXE_PRE 245
#define REP_LEN_EXE_POST 245
#define REP_OS_DESC 1 // C 70
#define REP_OS_TYPE 71 // N 3
#define REP_OS_IDX_NO 74 // N 3
#define REP_OS_IDX_EXP 77 // C 240
#define REP_OS_PG_SIZE 317 // C 12
#define REP_OS_PG_LEN 329 // N 5
#define REP_OS_PG_WID 334 // N 5
#define REP_OS_LINES 339 // N 2
#define REP_OS_MG_TOP 341 // N 3
#define REP_OS_MG_LEFT 344 // N 3
#define REP_OS_MG_BOTTOM 347 // N 3
#define REP_OS_EJ_BEFORE 350 // L 1
#define REP_OS_EJ_AFTER 351 // L 1
#define REP_OS_PLAIN 352 // N 2
#define REP_OS_FTR_PAG 354 // L 1
#define REP_OS_SMR_NEXT 355 // L 1
#define REP_OS_HDR_PAGES 356 // C 10
#define REP_OS_BNK_LINES 366 // N 3
#define REP_OS_BNK_AFTER 369 // N 3
#define REP_OS_DATA_BOX 372 // L 1
#define REP_OS_FILE 373 // C 80
#define REP_OS_COPIES 453 // N 3
#define REP_OS_TTL_PAGES 456 // C 10
#define REP_OS_INIT_CPI 466 // N 2
#define REP_OS_PRN_QLY 468 // C 1
#define REP_OS_RECONFIRM 469 // L 1
#define REP_OS_FTR_BOTTOM 470 // L 1
#define REP_OS_HTML 471 // L 1
#define REP_OS_PRINTER 472 // C 7
#define REP_OS_ORIENT 479 // C 1
#define REP_OS_PREVIEW 480 // L 1
#define REP_OS_GRAY 481 // L 1
#define REP_OS_WINDLG 482 // L 1
#define REP_OS_DUPLEX 483 // N 1
#define REP_OS_COLS 484 // N 3
#define REP_OS_ROWS 487 // N 3
// TOTAL 490
#define REP_OS_FOR 1 // C 240
#define REP_OS_WHILE 241 // C 125
#define REP_OS_FIRST 366 // C 125
#define REP_OS_EXE_PRE 1 // C 245
#define REP_OS_EXE_POST 246 // C 245
#define SCT_ORDER 1
#define SCT_ID 2
#define SCT_SAY 3
@@ -475,49 +320,7 @@
#define SCT_EQN 6
#define SCT_EJECT 7
#define SCT_RESET 8
#define SCT_INIT_VRBLS 8
#define SCT_LEN_ORDER 3
#define SCT_LEN_ID 8
#define SCT_LEN_SAY 5
#define SCT_LEN_ROWS 3
#define SCT_LEN_COLOR 7
#define SCT_LEN_EQN 240
#define SCT_LEN_EJECT 1
#define SCT_LEN_RESET 1
#define SCT_OS_ORDER 1 // N 3
#define SCT_OS_ID 4 // C 8
#define SCT_OS_SAY 12 // C 5
#define SCT_OS_ROWS 17 // N 3
#define SCT_OS_COLOR 20 // C 7
#define SCT_OS_EQN 27 // C 240
#define SCT_OS_EJECT 267 // L 1
#define SCT_OS_RESET 268 // L 1
#define SCT_ID_GRP01_H 200
#define SCT_ID_GRP01_S 800
#define SCT_CLR_ {'W+/RB','W+/G','W+/R','W+/N','W+/GR'}
#define SCT_INIT_GROUPS 20
#define REP_FOR_MOD 1
#define REP_FOR_RPT 2
#define REP_FOR_BRW 3
#define REP_FOR_MDL 4
#define REP_FOR_DOC 5
#define REP_FOR_LAB 6
#define REP_FOR_SCR 7
#define REP_SRC_MOD 100
#define REP_SRC_RPT 200
#define REP_SRC_BRW 300
#define REP_SRC_MDL 400
#define REP_SRC_DOC 500
#define REP_SRC_LAB 600
#define REP_SRC_SCR 700
#translate B_MSG ;

View File

@@ -9,23 +9,19 @@
-w3
-es2
-inc
-mt
-gui
-gtwvt
#..\gtwvg\gtwvg.hbc
cu_main.prg
cu_desgn.prg
cu_menu.prg
cu_outpt.prg
cu_prpty.prg
cu_utlty.prg
cu_achoi.prg
cu_object.prg
-ohbcuied
-icon={allwin}../../package/harb_win.ico
-3rd=hbide_file=hbcuied.ch