2001-08-17 15:09 GMT+2 Maurilio Longo <maurilio.longo@libero.it>

* source/rtl/tbrowse.prg
     ! fixed ::DispCell() cursor positioning (broken with latest changes to
       implement picture handling)
     * changed ::autolite handling
     ! fixed ::GoBottom() method which was not repainting TBrowse correctly if
       available records were less than available rows.
This commit is contained in:
Maurilio Longo
2001-08-17 13:12:22 +00:00
parent f708ef92c8
commit 32b9bec01f
2 changed files with 44 additions and 33 deletions

View File

@@ -1,3 +1,11 @@
2001-08-17 15:09 GMT+2 Maurilio Longo <maurilio.longo@libero.it>
* source/rtl/tbrowse.prg
! fixed ::DispCell() cursor positioning (broken with latest changes to
implement picture handling)
* changed ::autolite handling
! fixed ::GoBottom() method which was not repainting TBrowse correctly if
available records were less than available rows.
2001-08-16 16:30 UTC-0400 David G. Holm <dholm@jsd-llc.com>
* source/pp/pptable.c
@@ -16,7 +24,7 @@
* include/hbextern.ch
* removed extern declaration for ALTD() function
* source/rtl/tbrowse.prg
* Added support for Autolite = .f. (I hope this is the right fix)
* Added support for Autolite = .f. (I hope this is the right fix)
2001-08-11 08:40 GMT -3 Luiz Rafael Culik <culik@sl.conex.net>
*tests/testbrw.prg
* updated to show the use of pictures with tbrowse
@@ -52,7 +60,7 @@
* tests/gtstdtst.prg
Submitted by "Fergus McDonald" <listsub@qvolution.com>
+ New test module for GTSTD terminal driver.
+ New test module for GTSTD terminal driver.
* source/rtl/gtstd/gtstd.c
Submitted by "Fergus McDonald" <listsub@qvolution.com>

View File

@@ -57,7 +57,7 @@
* Copyright 2000, 2001 Maurilio Longo <maurilio.longo@libero.it>
* Cursor movement handling and stabilization loop
* ::PageUp(), ::PageDown(), ::Down(), ::Up(), ::GoBottom(), ::GoTop(), ::Stabilize()
* ::GotoXY()
* ::GotoXY(), ::DispCell()
*
* Copyright 2001 Manu Exposito <maex14@dipusevilla.es>
* Activate data PICTURE DispCell(nColumn, nColor)
@@ -68,9 +68,6 @@
/* NOTE: Don't use SAY in this module, use DispOut(), DispOutAt() instead,
otherwise it will not be CA-Cl*pper compatible. [vszakats] */
/* TODO: Fix TBrowse when AutoLite = .F.
This is also needed to make dbEdit() work correctly. [vszakats] */
/* TODO: :firstScrCol() --> nScreenCol
Determines screen column where the first table column is displayed.
Xbase++ compatible method */
@@ -364,14 +361,18 @@ return Self
METHOD GoBottom() CLASS TBrowse
local nToEnd
local nToTop
::Moved()
Eval(::goBottomBlock)
nToEnd := Abs(Eval(::SkipBlock, -::RowCount))
::nNewRowPos := nToEnd
::nLastRetrieved := ::RowCount - nToEnd
// Skip back from last record as many records as TBrowse can hold
nToTop := Abs(Eval(::SkipBlock, -(::RowCount - 1)))
// From top of TBrowse new row position is nToTop + 1 records away
::nNewRowPos := nToTop + 1
// Last read record is first record inside TBrowse
::nLastRetrieved := 1
::RefreshAll()
return Self
@@ -574,10 +575,9 @@ return Self
METHOD DeHilite() CLASS TBrowse
local nRow := ::nTop + ::RowPos - iif( ::lHeaders, 0, 1 ) + iif( Empty( ::HeadSep ), 0, 1 )
local nCol := ::aColumns[ ::ColPos ]:ColPos
SetPos( nRow, nCol )
::DispCell(::ColPos, 1)
SetPos( nRow, ::aColumns[ ::ColPos ]:ColPos )
::DispCell(::ColPos, CLR_STANDARD)
return Self
@@ -595,21 +595,16 @@ METHOD Hilite() CLASS TBrowse
local nColor
local cColor
local nRow
local nCol
nRow := ::nTop + ::RowPos - iif( ::lHeaders, 0, 1 ) + iif( Empty( ::HeadSep ), 0, 1 )
SetPos( nRow, ::aColumns[ ::ColPos ]:ColPos )
if ::AutoLite
nRow := ::nTop + ::RowPos - iif( ::lHeaders, 0, 1 ) + iif( Empty( ::HeadSep ), 0, 1 )
nCol := ::aColumns[ ::ColPos ]:ColPos
::DispCell(::ColPos, CLR_ENHANCED)
SetPos( nRow, nCol )
::DispCell(::ColPos, 2)
/*QUESTION : Is this the correct fix when autolite is .f. */
else
nRow := ::nTop + ::RowPos - iif( ::lHeaders, 0, 1 ) + iif( Empty( ::HeadSep ), 0, 1 )
nCol := ::aColumns[ ::ColPos ]:ColPos
SetPos( nRow, nCol )
::DispCell(::ColPos, 3)
::DispCell(::ColPos, CLR_STANDARD)
endif
@@ -941,7 +936,7 @@ METHOD Stabilize() CLASS TBrowse
endif
if lDisplay
::DispCell(n, 1)
::DispCell(n, CLR_STANDARD)
SetPos( Row(), nCol + ::aColumns[ n ]:Width )
else
@@ -1034,17 +1029,19 @@ METHOD ColorRect( aRect, aRectColor ) CLASS TBrowse
return Self
METHOD DispCell( nColumn, nColor ) CLASS TBrowse
local oCol := ::aColumns[nColumn]
LOCAL oCol := ::aColumns[nColumn]
LOCAL ftmp := Eval(oCol:block)
LOCAL nCol := Col()
LOCAL cType := ValType( ftmp )
local cPict := if( !empty( oCol:Picture ), oCol:Picture, "@" )
local cDisp := ""
local cColor := iif(oCol:ColorBlock != NIL,;
hb_ColorIndex(::ColorSpec, Eval(oCol:ColorBlock, ftmp)[nColor] - 1),;
hb_ColorIndex(::ColorSpec, nColor - 1))
LOCAL cPict := iif( !empty( oCol:Picture ), oCol:Picture, "@" )
LOCAL cDisp
// NOTE: When nColor is used as an array index we need to increment it by one since CLR_STANDARD is 0
LOCAL cColor := iif(oCol:ColorBlock != NIL,;
hb_ColorIndex(::ColorSpec, Eval(oCol:ColorBlock, ftmp)[nColor + 1] - 1),;
hb_ColorIndex(::ColorSpec, nColor))
do case
case cType $ "CM"
@@ -1054,18 +1051,24 @@ METHOD DispCell( nColumn, nColor ) CLASS TBrowse
cDisp := Right( transform( ftmp, cPict ), ::aColumns[ nColumn ]:Width )
case cType == "D"
cPict := if( cPict == "@", "@D", cPict )
cPict := iif( cPict == "@", "@D", cPict )
cDisp := Right( transform( ftmp, cPict ), ::aColumns[ nColumn ]:Width )
case cType == "L"
cDisp := Space( ::aColumns[ nColumn ]:Width / 2 ) + iif( ftmp, "T","F" )
otherwise
cDisp := ""
endcase
DispOut( cDisp, cColor )
DispOut( Space( nCol + ::aColumns[ nColumn ]:Width - Col() ), cColor)
// Logical fields are centered on column width
// SetPos( Row(), nCol + if( cType == "L", ::aColumns[::ColPos]:Width / 2, 0 ) )
// NOTE: DO NOT REMOVE THIS LINE It is needed to have cursor on correct screen column
// inside each TBrowse column
SetPos( Row(), nCol + iif( cType == "L", ::aColumns[::ColPos]:Width / 2, 0 ) )
return Self