2009-08-20 18:08 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
* contrib/hbxbp/xbpbrowse.prg
+ Implemented ::setLeftFrozen( aColumns ) and ::setRightFrozen( aColumns )
* contrib/hbxbp/tests/demoxbp.prg
+ Demonstrated the frozen columns feature.
; TODO: Finetune horizontal navigation with respect to frozen columns.
This commit is contained in:
@@ -17,6 +17,15 @@
|
||||
past entries belonging to author(s): Viktor Szakats.
|
||||
*/
|
||||
|
||||
2009-08-20 18:08 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* contrib/hbxbp/xbpbrowse.prg
|
||||
+ Implemented ::setLeftFrozen( aColumns ) and ::setRightFrozen( aColumns )
|
||||
|
||||
* contrib/hbxbp/tests/demoxbp.prg
|
||||
+ Demonstrated the frozen columns feature.
|
||||
|
||||
; TODO: Finetune horizontal navigation with respect to frozen columns.
|
||||
|
||||
2009-08-21 02:57 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* utils/hbmk2/hbmk2.prg
|
||||
* Improvement in msvc/wce support to support multiple WinCE
|
||||
|
||||
@@ -1854,6 +1854,9 @@ FUNCTION Build_Browse( oWnd )
|
||||
//
|
||||
oXbpBrowse:addColumn( oXbpColumn )
|
||||
|
||||
oXbpBrowse:setLeftFrozen( { 1 } )
|
||||
oXbpBrowse:setRightFrozen( { 4,5,6 } )
|
||||
|
||||
RETURN nil
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
@@ -163,6 +163,9 @@ PROTECTED:
|
||||
VAR n_Right AS NUMERIC INIT 0 // 05. Rightmost column for the TBrowse display
|
||||
|
||||
VAR columns AS ARRAY INIT {} // 06. Array of TBrowse columns
|
||||
VAR columnsC AS ARRAY INIT {}
|
||||
VAR columnsL AS ARRAY INIT {}
|
||||
VAR columnsR AS ARRAY INIT {}
|
||||
|
||||
VAR cHeadSep AS CHARACTER INIT "" // 07. Heading separator characters
|
||||
VAR cColSep AS CHARACTER INIT " " // 08. Column separator characters
|
||||
@@ -229,7 +232,6 @@ EXPORTED:
|
||||
METHOD hitTopBlock( bBlock ) SETGET
|
||||
METHOD stableBlock( bBlock ) SETGET
|
||||
|
||||
|
||||
METHOD colorSpec( cColorSpec ) SETGET // get/set string value with color table for the TBrowse display
|
||||
|
||||
ACCESS rowPos METHOD getRowPos // get current cursor row position
|
||||
@@ -363,7 +365,7 @@ PROTECTED:
|
||||
DATA oDbfModel
|
||||
DATA oModelIndex INIT QModelIndex()
|
||||
DATA oVHeaderView
|
||||
DATA oHHeaderView INIT QHeaderView()
|
||||
DATA oHeaderView INIT QHeaderView()
|
||||
DATA oVScrollBar INIT QScrollBar()
|
||||
DATA oHScrollBar INIT QScrollBar()
|
||||
DATA oViewport INIT QWidget()
|
||||
@@ -417,11 +419,33 @@ EXPORTED:
|
||||
|
||||
DATA oTableView
|
||||
DATA oGridLayout
|
||||
DATA oHFooterView
|
||||
DATA oModelFooter
|
||||
DATA oFooterView
|
||||
DATA oFooterModel
|
||||
|
||||
DATA oLeftView
|
||||
DATA oLeftVHeaderView
|
||||
DATA oLeftHeaderView
|
||||
DATA oLeftFooterView
|
||||
DATA oLeftFooterModel
|
||||
DATA oLeftDbfModel
|
||||
|
||||
DATA oRightView
|
||||
DATA oRightVHeaderView
|
||||
DATA oRightHeaderView
|
||||
DATA oRightFooterView
|
||||
DATA oRightFooterModel
|
||||
DATA oRightDbfModel
|
||||
|
||||
METHOD buildLeftFreeze()
|
||||
METHOD buildRightFreeze()
|
||||
METHOD fetchColumnInfo()
|
||||
|
||||
METHOD setLeftFrozen( aColumns )
|
||||
METHOD setRightFrozen( aColumns )
|
||||
DATA aLeftFrozen INIT {}
|
||||
DATA aRightFrozen INIT {}
|
||||
DATA nLeftFrozen INIT 0
|
||||
DATA nRightFrozen INIT 0
|
||||
|
||||
ENDCLASS
|
||||
|
||||
@@ -445,6 +469,93 @@ METHOD new( nTop, nLeft, nBottom, nRight ) CLASS XbpBrowse
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD XbpBrowse:buildLeftFreeze()
|
||||
|
||||
/* Left Freeze */
|
||||
::oLeftView := HbTableView():new()
|
||||
//
|
||||
::oLeftView:setHorizontalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
|
||||
::oLeftView:setVerticalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
|
||||
::oLeftView:setTabKeyNavigation( .t. )
|
||||
::oLeftView:setShowGrid( .t. )
|
||||
::oLeftView:setGridStyle( Qt_DotLine ) /* to be based on column definition */
|
||||
::oLeftView:setSelectionMode( QAbstractItemView_SingleSelection )
|
||||
::oLeftView:setSelectionBehavior( IF( ::cursorMode == XBPBRW_CURSOR_ROW, QAbstractItemView_SelectRows, QAbstractItemView_SelectItems ) )
|
||||
//
|
||||
/* Veritical Header because of Performance boost */
|
||||
::oLeftVHeaderView := QHeaderView()
|
||||
::oLeftVHeaderView:configure( ::oLeftView:verticalHeader() )
|
||||
::oLeftVHeaderView:hide()
|
||||
/* Horizontal Header Fine Tuning */
|
||||
::oLeftHeaderView := QHeaderView()
|
||||
::oLeftHeaderView:configure( ::oLeftView:horizontalHeader() )
|
||||
::oLeftHeaderView:setHighlightSections( .F. )
|
||||
|
||||
::oLeftDbfModel := HbDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 151, p1, p2, p3, p4 ) } )
|
||||
::oLeftView:setModel( QT_PTROF( ::oLeftDbfModel ) )
|
||||
//
|
||||
//::oLeftView:hide()
|
||||
|
||||
/* Horizontal Footer */
|
||||
::oLeftFooterView := QHeaderView():new( Qt_Horizontal )
|
||||
//
|
||||
::oLeftFooterView:setHighlightSections( .F. )
|
||||
::oLeftFooterView:setMinimumHeight( 20 )
|
||||
::oLeftFooterView:setMaximumHeight( 20 )
|
||||
::oLeftFooterView:setResizeMode( QHeaderView_Fixed )
|
||||
::oLeftFooterView:setFocusPolicy( Qt_NoFocus )
|
||||
//
|
||||
::oLeftFooterModel := HbDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 152, p1, p2, p3, p4 ) } )
|
||||
::oLeftFooterView:setModel( QT_PTROF( ::oLeftFooterModel ) )
|
||||
//
|
||||
//::oLeftFooterView:hide()
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD XbpBrowse:buildRightFreeze()
|
||||
LOCAL oVHdr
|
||||
|
||||
/* Left Freeze */
|
||||
::oRightView := HbTableView():new()
|
||||
//
|
||||
::oRightView:setHorizontalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
|
||||
::oRightView:setVerticalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
|
||||
::oRightView:setTabKeyNavigation( .t. )
|
||||
::oRightView:setShowGrid( .t. )
|
||||
::oRightView:setGridStyle( Qt_DotLine ) /* to be based on column definition */
|
||||
::oRightView:setSelectionMode( QAbstractItemView_SingleSelection )
|
||||
::oRightView:setSelectionBehavior( IF( ::cursorMode == XBPBRW_CURSOR_ROW, QAbstractItemView_SelectRows, QAbstractItemView_SelectItems ) )
|
||||
//
|
||||
/* Veritical Header because of Performance boost */
|
||||
oVHdr := QHeaderView()
|
||||
oVHdr:configure( ::oRightView:verticalHeader() )
|
||||
oVHdr:hide()
|
||||
/* Horizontal Header Fine Tuning */
|
||||
::oRightHeaderView := QHeaderView()
|
||||
::oRightHeaderView:configure( ::oRightView:horizontalHeader() )
|
||||
::oRightHeaderView:setHighlightSections( .F. )
|
||||
|
||||
::oRightDbfModel := HbDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 161, p1, p2, p3, p4 ) } )
|
||||
::oRightView:setModel( QT_PTROF( ::oRightDbfModel ) )
|
||||
|
||||
/* Horizontal Footer */
|
||||
::oRightFooterView := QHeaderView():new( Qt_Horizontal )
|
||||
//
|
||||
::oRightFooterView:setHighlightSections( .F. )
|
||||
::oRightFooterView:setMinimumHeight( 20 )
|
||||
::oRightFooterView:setMaximumHeight( 20 )
|
||||
::oRightFooterView:setResizeMode( QHeaderView_Fixed )
|
||||
::oRightFooterView:setFocusPolicy( Qt_NoFocus )
|
||||
//
|
||||
::oRightFooterModel := HbDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 162, p1, p2, p3, p4 ) } )
|
||||
::oRightFooterView:setModel( QT_PTROF( ::oRightFooterModel ) )
|
||||
|
||||
RETURN Self
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD XbpBrowse:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
|
||||
::xbpWindow:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
@@ -494,16 +605,15 @@ METHOD XbpBrowse:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
::oVHeaderView:hide()
|
||||
|
||||
/* Horizontal Header Fine Tuning */
|
||||
::oHHeaderView := QHeaderView()
|
||||
::oHHeaderView:configure( ::oTableView:horizontalHeader() )
|
||||
::oHHeaderView:setHighlightSections( .F. )
|
||||
::oHeaderView := QHeaderView()
|
||||
::oHeaderView:configure( ::oTableView:horizontalHeader() )
|
||||
::oHeaderView:setHighlightSections( .F. )
|
||||
//
|
||||
::connect( QT_PTROF( ::oHHeaderView ), "sectionPressed(int)" , {|o,i| ::exeBlock( 111, i, o ) } )
|
||||
::connect( QT_PTROF( ::oHHeaderView ), "sectionResized(int,int,int)", {|o,i,i1,i2| ::exeBlock( 121, i, i1, i2, o ) } )
|
||||
::connect( QT_PTROF( ::oHeaderView ), "sectionPressed(int)" , {|o,i | ::exeBlock( 111, i, o ) } )
|
||||
::connect( QT_PTROF( ::oHeaderView ), "sectionResized(int,int,int)", {|o,i,i1,i2| ::exeBlock( 121, i, i1, i2, o ) } )
|
||||
|
||||
/* .DBF Manipulation Model */
|
||||
::oDbfModel := HbDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 1, p1, p2, p3, p4 ) } )
|
||||
::oDbfModel:setObjectName( "DbfView" )
|
||||
::oDbfModel := HbDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 141, p1, p2, p3, p4 ) } )
|
||||
/* Attach Model with the View */
|
||||
::oTableView:setModel( QT_PTROF( ::oDbfModel ) )
|
||||
/* Set Initial Column and Row */
|
||||
@@ -511,53 +621,44 @@ METHOD XbpBrowse:create( oParent, oOwner, aPos, aSize, aPresParams, lVisible )
|
||||
::pCurIndex := ::oTableView:currentIndex()
|
||||
|
||||
/* Horizontal Footer */
|
||||
::oHFooterView := QHeaderView():new( Qt_Horizontal )
|
||||
::oFooterView := QHeaderView():new( Qt_Horizontal )
|
||||
//
|
||||
::oHFooterView:setHighlightSections( .F. )
|
||||
::oHFooterView:setObjectName( "Footer" )
|
||||
::oHFooterView:setMinimumHeight( 20 )
|
||||
::oHFooterView:setMaximumHeight( 20 )
|
||||
::oHFooterView:setResizeMode( QHeaderView_Fixed )
|
||||
::oHFooterView:setFocusPolicy( Qt_NoFocus )
|
||||
//
|
||||
::oModelFooter := HbDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 11, p1, p2, p3, p4 ) } )
|
||||
::oModelFooter:setObjectName( "FooterView" )
|
||||
::oHFooterView:setModel( QT_PTROF( ::oModelFooter ) )
|
||||
//
|
||||
//::oHFooterView:hide()
|
||||
::oFooterView:setHighlightSections( .F. )
|
||||
|
||||
/* Left Freeze */
|
||||
::oLeftView := HbTableView():new()
|
||||
::oFooterView:setMinimumHeight( 20 )
|
||||
::oFooterView:setMaximumHeight( 20 )
|
||||
::oFooterView:setResizeMode( QHeaderView_Fixed )
|
||||
::oFooterView:setFocusPolicy( Qt_NoFocus )
|
||||
//
|
||||
::oLeftView:setHorizontalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
|
||||
::oLeftView:setVerticalScrollBarPolicy( Qt_ScrollBarAlwaysOff )
|
||||
/* Some parameters */
|
||||
::oLeftView:setTabKeyNavigation( .t. )
|
||||
::oLeftView:setShowGrid( .t. )
|
||||
::oLeftView:setGridStyle( Qt_DotLine ) /* to be based on column definition */
|
||||
::oLeftView:setSelectionMode( QAbstractItemView_SingleSelection )
|
||||
::oLeftView:setSelectionBehavior( IF( ::cursorMode == XBPBRW_CURSOR_ROW, QAbstractItemView_SelectRows, QAbstractItemView_SelectItems ) )
|
||||
//
|
||||
::oLeftView:setModel( QT_PTROF( ::oDbfModel ) )
|
||||
//
|
||||
::oLeftView:hide()
|
||||
::oFooterModel := HbDbfModel():new( {|p1,p2,p3,p4| ::supplyInfo( 142, p1, p2, p3, p4 ) } )
|
||||
|
||||
/* Veritical Header because of Performance boost */
|
||||
::oLeftVHeaderView := QHeaderView()
|
||||
::oLeftVHeaderView:configure( ::oLeftView:verticalHeader() )
|
||||
::oLeftVHeaderView:hide()
|
||||
::oFooterView:setModel( QT_PTROF( ::oFooterModel ) )
|
||||
//
|
||||
//::oFooterView:hide()
|
||||
|
||||
/* Widget for ::setLeftFrozen( aColumns ) */
|
||||
::buildLeftFreeze()
|
||||
/* Widget for ::setRightFrozen( aColumns ) */
|
||||
::buildRightFreeze()
|
||||
|
||||
/* Place all widgets in a Grid Layout */
|
||||
::oGridLayout := QGridLayout():new( ::pWidget )
|
||||
::oGridLayout:setContentsMargins( 0,0,0,0 )
|
||||
::oGridLayout:setSpacing( 1 )
|
||||
::oGridLayout:setHorizontalSpacing( 0 )
|
||||
::oGridLayout:setVerticalSpacing( 0 )
|
||||
/* Rows */
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oLeftView ), 0, 0, 1, 1 )
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oTableView ), 0, 1, 1, 1 )
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oHFooterView ), 1, 1, 1, 1 )
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oHScrollBar ), 2, 1, 1, 1 )
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oLeftView ), 0, 0, 1, 1 )
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oLeftFooterView ), 1, 0, 1, 1 )
|
||||
//
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oTableView ), 0, 1, 1, 1 )
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oFooterView ), 1, 1, 1, 1 )
|
||||
//
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oRightView ), 0, 2, 1, 1 )
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oRightFooterView ), 1, 2, 1, 1 )
|
||||
//
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oHScrollBar ), 2, 0, 1, 3 )
|
||||
/* Columns */
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oVScrollBar ), 0, 2, 2, 1 )
|
||||
::oGridLayout:addWidget_1( QT_PTROF( ::oVScrollBar ), 0, 3, 2, 1 )
|
||||
|
||||
IF ::visible
|
||||
::show()
|
||||
@@ -720,10 +821,10 @@ METHOD XbpBrowse:exeBlock( nEvent, p1, p2, p3 )
|
||||
SetAppEvent( xbeBRW_HeaderRbDown, { 0,0 }, p1+1, Self )
|
||||
|
||||
CASE nEvent == 121 /* Header Section Resized */
|
||||
::oHFooterView:resizeSection( p1, p3 )
|
||||
::oFooterView:resizeSection( p1, p3 )
|
||||
|
||||
CASE nEvent == 122 /* Footer Section Resized */
|
||||
::oHHeaderView:resizeSection( p1, p3 )
|
||||
::oHeaderView:resizeSection( p1, p3 )
|
||||
|
||||
ENDCASE
|
||||
|
||||
@@ -826,134 +927,84 @@ METHOD handleEvent( nEvent, mp1, mp2 ) CLASS XbpBrowse
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD XbpBrowse:supplyInfo( nMode, nInfo, p2, p3 )
|
||||
LOCAL aColor
|
||||
|
||||
DO CASE
|
||||
CASE nMode == 1 /* oDbfModel : MainView : Header - Data */
|
||||
SWITCH ( nInfo )
|
||||
|
||||
CASE HBQT_BRW_COLCOUNT
|
||||
CASE nMode == 141 /* Main View Header|Data */
|
||||
IF nInfo == HBQT_BRW_COLCOUNT
|
||||
IF ::colCount > 0
|
||||
::forceStable()
|
||||
::setHorzScrollBarRange( .t. )
|
||||
ENDIF
|
||||
RETURN ::colCount
|
||||
|
||||
CASE HBQT_BRW_ROWCOUNT
|
||||
::setVertScrollBarRange( .f. )
|
||||
ELSEIF nInfo == HBQT_BRW_ROWCOUNT
|
||||
IF ::colCount > 0
|
||||
::forceStable()
|
||||
::setVertScrollBarRange( .f. )
|
||||
ENDIF
|
||||
RETURN ::rowCount
|
||||
ELSE
|
||||
RETURN ::fetchColumnInfo( nInfo, 0, p2, p3 )
|
||||
ENDIF
|
||||
|
||||
/* Header Area */
|
||||
|
||||
CASE HBQT_BRW_COLHEIGHT
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:hHeight , 16 )
|
||||
|
||||
CASE HBQT_BRW_COLHEADER
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:heading , "" )
|
||||
|
||||
CASE HBQT_BRW_COLALIGN
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:hAlignment, Qt_AlignHCenter )
|
||||
|
||||
CASE HBQT_BRW_COLFGCOLOR
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:hFgColor , Qt_black )
|
||||
|
||||
CASE HBQT_BRW_COLBGCOLOR
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:hBgColor , Qt_darkGray )
|
||||
|
||||
/* Data Area */
|
||||
|
||||
CASE HBQT_BRW_DATFGCOLOR
|
||||
IF ( p3 > 0 .and. p3 <= ::colCount )
|
||||
IF hb_isBlock( ::columns[ p3 ]:colorBlock )
|
||||
aColor := eval( ::columns[ p3 ]:colorBlock, ::cellValueA( p2, p3 ) )
|
||||
IF hb_isArray( aColor ) .and. hb_isNumeric( aColor[ 1 ] )
|
||||
RETURN ConvertAFact( "Color", XBTOQT_FROM_XB, aColor[ 1 ] )
|
||||
ELSE
|
||||
RETURN ::columns[ p3 ]:dFgColor
|
||||
ENDIF
|
||||
ELSE
|
||||
RETURN ::columns[ p3 ]:dFgColor
|
||||
ENDIF
|
||||
ELSE
|
||||
RETURN Qt_black
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_DATBGCOLOR
|
||||
IF ( p3 > 0 .and. p3 <= ::colCount )
|
||||
IF hb_isBlock( ::columns[ p3 ]:colorBlock )
|
||||
aColor := eval( ::columns[ p3 ]:colorBlock, ::cellValueA( p2, p3 ) )
|
||||
|
||||
IF hb_isArray( aColor ) .and. hb_isNumeric( aColor[ 2 ] )
|
||||
RETURN ConvertAFact( "Color", XBTOQT_FROM_XB, aColor[ 2 ] )
|
||||
ELSE
|
||||
RETURN ::columns[ p3 ]:dBgColor
|
||||
ENDIF
|
||||
ELSE
|
||||
RETURN ::columns[ p3 ]:dBgColor
|
||||
ENDIF
|
||||
ELSE
|
||||
RETURN Qt_white
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_DATALIGN
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount, ::columns[ p3 ]:dAlignment , Qt_AlignLeft )
|
||||
|
||||
CASE HBQT_BRW_DATHEIGHT
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount, ::columns[ p3 ]:dHeight , 16 )
|
||||
|
||||
CASE HBQT_BRW_CELLDECORATION
|
||||
IF ::lFirst
|
||||
::lFirst := .f.
|
||||
::setVertScrollBarRange( .t. )
|
||||
::setHorzScrollBarRange( .f. )
|
||||
::oTableView:selectRow( ::rowPos - 1 )
|
||||
ENDIF
|
||||
IF ::columns[ p3 ]:type == XBPCOL_TYPE_FILEICON
|
||||
RETURN trim( ::cellValue( p2, p3 ) )
|
||||
ELSE
|
||||
RETURN ""
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_CELLVALUE
|
||||
//xbp_Debug( "cellvalue",p2,p3 )
|
||||
IF ::columns[ p3 ]:type == XBPCOL_TYPE_FILEICON
|
||||
RETURN ""
|
||||
ELSE
|
||||
IF ::lFirst
|
||||
::lFirst := .f.
|
||||
::setVertScrollBarRange( .t. )
|
||||
::setHorzScrollBarRange( .f. )
|
||||
::oTableView:selectRow( ::rowPos - 1 )
|
||||
ENDIF
|
||||
RETURN ::cellValue( p2, p3 )
|
||||
ENDIF
|
||||
ENDSWITCH
|
||||
|
||||
CASE nMode == 11 /* oDbfModel : MainView : Footer */
|
||||
SWITCH ( nInfo )
|
||||
|
||||
CASE HBQT_BRW_COLCOUNT
|
||||
CASE nMode == 142 /* Main View Footer */
|
||||
IF nInfo == HBQT_BRW_COLCOUNT
|
||||
IF ::colCount > 0
|
||||
::forceStable()
|
||||
ENDIF
|
||||
RETURN ::colCount
|
||||
ELSE
|
||||
RETURN ::fetchColumnInfo( nInfo, 1, p2, p3 )
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_COLHEIGHT
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:fHeight , 20 )
|
||||
CASE nMode == 151 /* Left Frozen Header|Data */
|
||||
IF nInfo == HBQT_BRW_COLCOUNT
|
||||
IF ::nLeftFrozen > 0
|
||||
::forceStable()
|
||||
ENDIF
|
||||
RETURN ::nLeftFrozen
|
||||
ELSEIF nInfo == HBQT_BRW_ROWCOUNT
|
||||
IF ::nLeftFrozen > 0
|
||||
::forceStable()
|
||||
ENDIF
|
||||
RETURN ::rowCount
|
||||
ELSE
|
||||
RETURN ::fetchColumnInfo( nInfo, 0, p2, ::aLeftFrozen[ p3 ] )
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_COLHEADER
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:footing , "" )
|
||||
CASE nMode == 152 /* Left Frozen Footer */
|
||||
IF nInfo == HBQT_BRW_COLCOUNT
|
||||
IF ::nLeftFrozen > 0
|
||||
::forceStable()
|
||||
ENDIF
|
||||
RETURN ::nLeftFrozen
|
||||
ELSE
|
||||
RETURN ::fetchColumnInfo( nInfo, 1, p2, ::aLeftFrozen[ p3 ] )
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_COLALIGN
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:fAlignment, Qt_AlignHCenter )
|
||||
CASE nMode == 161 /* Right Frozen Header|Data */
|
||||
IF nInfo == HBQT_BRW_COLCOUNT
|
||||
IF ::nRightFrozen > 0
|
||||
::forceStable()
|
||||
ENDIF
|
||||
RETURN ::nRightFrozen
|
||||
ELSEIF nInfo == HBQT_BRW_ROWCOUNT
|
||||
IF ::nRightFrozen > 0
|
||||
::forceStable()
|
||||
ENDIF
|
||||
RETURN ::rowCount
|
||||
ELSE
|
||||
RETURN ::fetchColumnInfo( nInfo, 0, p2, ::aRightFrozen[ p3 ] )
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_COLFGCOLOR
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:fFgColor , Qt_black )
|
||||
|
||||
CASE HBQT_BRW_COLBGCOLOR
|
||||
RETURN IF( p3 > 0 .and. p3 <= ::colCount(), ::columns[ p3 ]:fBgColor , Qt_darkGray )
|
||||
|
||||
ENDSWITCH
|
||||
CASE nMode == 162 /* Right Frozen Footer */
|
||||
IF nInfo == HBQT_BRW_COLCOUNT
|
||||
IF ::nRightFrozen > 0
|
||||
::forceStable()
|
||||
ENDIF
|
||||
RETURN ::nRightFrozen
|
||||
ELSE
|
||||
RETURN ::fetchColumnInfo( nInfo, 1, p2, ::aRightFrozen[ p3 ] )
|
||||
ENDIF
|
||||
|
||||
ENDCASE
|
||||
|
||||
@@ -961,6 +1012,91 @@ METHOD XbpBrowse:supplyInfo( nMode, nInfo, p2, p3 )
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD fetchColumnInfo( nInfo, nArea, nRow, nCol ) CLASS XbpBrowse
|
||||
LOCAL aColor
|
||||
LOCAL oCol := ::columns[ nCol ]
|
||||
|
||||
SWITCH ( nInfo )
|
||||
|
||||
/* Data Area */
|
||||
CASE HBQT_BRW_DATFGCOLOR
|
||||
IF hb_isBlock( oCol:colorBlock )
|
||||
aColor := eval( oCol:colorBlock, ::cellValueA( nRow, nCol ) )
|
||||
IF hb_isArray( aColor ) .and. hb_isNumeric( aColor[ 1 ] )
|
||||
RETURN ConvertAFact( "Color", XBTOQT_FROM_XB, aColor[ 1 ] )
|
||||
ELSE
|
||||
RETURN oCol:dFgColor
|
||||
ENDIF
|
||||
ELSE
|
||||
RETURN oCol:dFgColor
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_DATBGCOLOR
|
||||
IF hb_isBlock( oCol:colorBlock )
|
||||
aColor := eval( oCol:colorBlock, ::cellValueA( nRow, nCol ) )
|
||||
IF hb_isArray( aColor ) .and. hb_isNumeric( aColor[ 2 ] )
|
||||
RETURN ConvertAFact( "Color", XBTOQT_FROM_XB, aColor[ 2 ] )
|
||||
ELSE
|
||||
RETURN oCol:dBgColor
|
||||
ENDIF
|
||||
ELSE
|
||||
RETURN oCol:dBgColor
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_DATALIGN
|
||||
RETURN oCol:dAlignment
|
||||
|
||||
CASE HBQT_BRW_DATHEIGHT
|
||||
RETURN oCol:dHeight
|
||||
|
||||
CASE HBQT_BRW_CELLDECORATION
|
||||
IF oCol:type == XBPCOL_TYPE_FILEICON
|
||||
RETURN trim( ::cellValue( nRow, nCol ) )
|
||||
ELSE
|
||||
RETURN ""
|
||||
ENDIF
|
||||
|
||||
CASE HBQT_BRW_CELLVALUE
|
||||
IF oCol:type == XBPCOL_TYPE_FILEICON
|
||||
RETURN ""
|
||||
ELSE
|
||||
RETURN ::cellValue( nRow, nCol )
|
||||
ENDIF
|
||||
|
||||
OTHERWISE
|
||||
IF nArea == 0 /* Header Area */
|
||||
SWITCH nInfo
|
||||
CASE HBQT_BRW_COLHEIGHT
|
||||
RETURN oCol:hHeight
|
||||
CASE HBQT_BRW_COLHEADER
|
||||
RETURN oCol:heading
|
||||
CASE HBQT_BRW_COLALIGN
|
||||
RETURN oCol:hAlignment
|
||||
CASE HBQT_BRW_COLFGCOLOR
|
||||
RETURN oCol:hFgColor
|
||||
CASE HBQT_BRW_COLBGCOLOR
|
||||
RETURN oCol:hBgColor
|
||||
ENDSWITCH
|
||||
ELSE /* Footer Area */
|
||||
SWITCH nInfo
|
||||
CASE HBQT_BRW_COLHEIGHT
|
||||
RETURN oCol:fHeight
|
||||
CASE HBQT_BRW_COLHEADER
|
||||
RETURN oCol:footing
|
||||
CASE HBQT_BRW_COLALIGN
|
||||
RETURN oCol:fAlignment
|
||||
CASE HBQT_BRW_COLFGCOLOR
|
||||
RETURN oCol:fFgColor
|
||||
CASE HBQT_BRW_COLBGCOLOR
|
||||
RETURN oCol:fBgColor
|
||||
ENDSWITCH
|
||||
ENDIF
|
||||
ENDSWITCH
|
||||
|
||||
RETURN ""
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD setVertScrollBarRange( lPageStep ) CLASS XbpBrowse
|
||||
LOCAL nMin, nMax
|
||||
|
||||
@@ -1017,11 +1153,11 @@ METHOD updateVertScrollBar() CLASS XbpBrowse
|
||||
METHOD setHorzOffset() CLASS XbpBrowse
|
||||
|
||||
IF ::colPos == ::colCount
|
||||
::oHHeaderView:setOffsetToLastSection()
|
||||
::oHFooterView:setOffsetToLastSection()
|
||||
::oHeaderView:setOffsetToLastSection()
|
||||
::oFooterView:setOffsetToLastSection()
|
||||
ELSE
|
||||
::oHHeaderView:setOffsetToSectionPosition( ::colPos - 1 )
|
||||
::oHFooterView:setOffsetToSectionPosition( ::colPos - 1 )
|
||||
::oHeaderView:setOffsetToSectionPosition( ::colPos - 1 )
|
||||
::oFooterView:setOffsetToSectionPosition( ::colPos - 1 )
|
||||
ENDIF
|
||||
|
||||
RETURN Self
|
||||
@@ -1034,6 +1170,12 @@ METHOD setCurrentIndex( lReset ) CLASS XbpBrowse
|
||||
//
|
||||
IF lReset
|
||||
::oDbfModel:reset() /* Important */
|
||||
IF hb_isObject( ::oLeftDbfModel )
|
||||
::oLeftDbfModel:reset()
|
||||
ENDIF
|
||||
IF hb_isObject( ::oRightDbfModel )
|
||||
::oRightDbfModel:reset()
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
Qt_QModelIndex_destroy( ::pCurIndex )
|
||||
@@ -1092,6 +1234,36 @@ METHOD XbpBrowse:cursorMode( nMode )
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD XbpBrowse:setRightFrozen( aColFrozens )
|
||||
LOCAL aFrozen := aclone( ::aRightFrozen )
|
||||
|
||||
IF hb_isArray( aColFrozens )
|
||||
::aRightFrozen := aColFrozens
|
||||
::nRightFrozen := len( ::aRightFrozen )
|
||||
::setUnstable()
|
||||
::configure( 128 )
|
||||
::forceStable()
|
||||
ENDIF
|
||||
|
||||
RETURN aFrozen
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD XbpBrowse:setLeftFrozen( aColFrozens )
|
||||
LOCAL aFrozen := aclone( ::aLeftFrozen )
|
||||
|
||||
IF hb_isArray( aColFrozens )
|
||||
::aLeftFrozen := aColFrozens
|
||||
::nLeftFrozen := len( ::aLeftFrozen )
|
||||
::setUnstable()
|
||||
::configure( 128 )
|
||||
::forceStable()
|
||||
ENDIF
|
||||
|
||||
RETURN aFrozen
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD doConfigure() CLASS XbpBrowse
|
||||
LOCAL oCol
|
||||
LOCAL aCol, aVal, aValA
|
||||
@@ -1105,7 +1277,7 @@ METHOD doConfigure() CLASS XbpBrowse
|
||||
LOCAL nFootHeight
|
||||
LOCAL lHeadSep, lFootSep
|
||||
LOCAL nMaxCellH := 0
|
||||
LOCAL nViewH, i, xVal, oFontMetrics
|
||||
LOCAL nViewH, i, xVal, oFontMetrics, n, nLeftWidth
|
||||
|
||||
::nConfigure := 0
|
||||
|
||||
@@ -1294,8 +1466,10 @@ METHOD doConfigure() CLASS XbpBrowse
|
||||
/* CA-Cl*pper update visible columns here but without
|
||||
* colPos repositioning. [druzus]
|
||||
*/
|
||||
#if 0
|
||||
_SETVISIBLE( ::aColData, _TBR_COORD( ::n_Right ) - _TBR_COORD( ::n_Left ) + 1, ;
|
||||
@::nFrozen, @::nLeftVisible, @::nRightVisible )
|
||||
#endif
|
||||
|
||||
::nLastPos := 0
|
||||
|
||||
@@ -1318,11 +1492,26 @@ METHOD doConfigure() CLASS XbpBrowse
|
||||
|
||||
/* Calculate how many rows fit in the view */
|
||||
IF len( ::columns ) > 0
|
||||
nMaxCellH := 20
|
||||
aeval( ::columns, {|o| nMaxCellH := max( nMaxCellH, o:fHeight ) } )
|
||||
::oHFooterView:setMaximumHeight( nMaxCellH )
|
||||
nMaxCellH := 0
|
||||
aeval( ::columns, {|o| nMaxCellH := max( nMaxCellH, o:hHeight ) } )
|
||||
//
|
||||
::oHeaderView:setMaximumHeight( nMaxCellH )
|
||||
::oHeaderView:setMinimumHeight( nMaxCellH )
|
||||
//
|
||||
::oLeftHeaderView:setMaximumHeight( nMaxCellH )
|
||||
::oLeftHeaderView:setMinimumHeight( nMaxCellH )
|
||||
//
|
||||
::oRightHeaderView:setMaximumHeight( nMaxCellH )
|
||||
::oRightHeaderView:setMinimumHeight( nMaxCellH )
|
||||
|
||||
::oViewport:configure( ::oTableView:viewport() )
|
||||
nMaxCellH := 0
|
||||
aeval( ::columns, {|o| nMaxCellH := max( nMaxCellH, o:fHeight ) } )
|
||||
//
|
||||
::oFooterView:setMaximumHeight( nMaxCellH )
|
||||
//
|
||||
::oLeftFooterView:setMaximumHeight( nMaxCellH )
|
||||
//
|
||||
::oRightFooterView:setMaximumHeight( nMaxCellH )
|
||||
|
||||
nMaxCellH := 0
|
||||
aeval( ::columns, {|o| nMaxCellH := max( nMaxCellH, o:dHeight ) } )
|
||||
@@ -1337,31 +1526,105 @@ METHOD doConfigure() CLASS XbpBrowse
|
||||
FOR i := 1 TO ::nRowsInView
|
||||
::oTableView:setRowHeight( i-1, nMaxCellH )
|
||||
::oLeftView:setRowHeight( i-1, nMaxCellH )
|
||||
::oRightView:setRowHeight( i-1, nMaxCellH )
|
||||
NEXT
|
||||
|
||||
/* Implement Column Resixig Mode */
|
||||
::oHHeaderView:setResizeMode( IF( ::lSizeCols, QHeaderView_Interactive, QHeaderView_Fixed ) )
|
||||
::oHFooterView:setResizeMode( QHeaderView_Fixed )
|
||||
/* Implement Column Resizing Mode */
|
||||
::oHeaderView:setResizeMode( IF( ::lSizeCols, QHeaderView_Interactive, QHeaderView_Fixed ) )
|
||||
::oFooterView:setResizeMode( QHeaderView_Fixed )
|
||||
//
|
||||
::oLeftHeaderView:setResizeMode( QHeaderView_Fixed )
|
||||
::oLeftFooterView:setResizeMode( QHeaderView_Fixed )
|
||||
//
|
||||
::oRightHeaderView:setResizeMode( QHeaderView_Fixed )
|
||||
::oRightFooterView:setResizeMode( QHeaderView_Fixed )
|
||||
|
||||
/* Set column widths */
|
||||
oFontMetrics := QFontMetrics():new( "QFont", ::oTableView:font() )
|
||||
//
|
||||
FOR i := 1 TO len( ::columns )
|
||||
IF ::columns[ i ]:nColWidth != NIL
|
||||
::oHHeaderView:resizeSection( i-1, ::columns[ i ]:nColWidth )
|
||||
::oHFooterView:resizeSection( i-1, ::columns[ i ]:nColWidth )
|
||||
::oHeaderView:resizeSection( i-1, ::columns[ i ]:nColWidth )
|
||||
::oFooterView:resizeSection( i-1, ::columns[ i ]:nColWidth )
|
||||
ELSE
|
||||
xVal := transform( eval( ::columns[ i ]:block ), ::columns[ i ]:picture )
|
||||
::oHHeaderView:resizeSection( i-1, oFontMetrics:width( xVal, -1 ) + 8 )
|
||||
::oHFooterView:resizeSection( i-1, oFontMetrics:width( xVal, -1 ) + 8 )
|
||||
::oHeaderView:resizeSection( i-1, oFontMetrics:width( xVal, -1 ) + 8 )
|
||||
::oFooterView:resizeSection( i-1, oFontMetrics:width( xVal, -1 ) + 8 )
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
nLeftWidth := 0
|
||||
FOR n := 1 TO ::nLeftFrozen
|
||||
i := ::aLeftFrozen[ n ]
|
||||
IF ::columns[ i ]:nColWidth != NIL
|
||||
::oLeftHeaderView:resizeSection( n-1, ::columns[ i ]:nColWidth )
|
||||
::oLeftFooterView:resizeSection( n-1, ::columns[ i ]:nColWidth )
|
||||
ELSE
|
||||
xVal := transform( eval( ::columns[ i ]:block ), ::columns[ i ]:picture )
|
||||
::oLeftHeaderView:resizeSection( n-1, oFontMetrics:width( xVal, -1 ) + 8 )
|
||||
::oLeftFooterView:resizeSection( n-1, oFontMetrics:width( xVal, -1 ) + 8 )
|
||||
ENDIF
|
||||
nLeftWidth += ::oLeftHeaderView:sectionSize( n-1 )
|
||||
NEXT
|
||||
::oLeftView:setFixedWidth( 4 + nLeftWidth )
|
||||
//::oLeftHeaderView:setFixedWidth( nLeftWidth )
|
||||
::oLeftFooterView:setFixedWidth( 4 + nLeftWidth )
|
||||
|
||||
nLeftWidth := 0
|
||||
FOR n := 1 TO ::nRightFrozen
|
||||
i := ::aRightFrozen[ n ]
|
||||
IF ::columns[ i ]:nColWidth != NIL
|
||||
::oRightHeaderView:resizeSection( n-1, ::columns[ i ]:nColWidth )
|
||||
::oRightFooterView:resizeSection( n-1, ::columns[ i ]:nColWidth )
|
||||
ELSE
|
||||
xVal := transform( eval( ::columns[ i ]:block ), ::columns[ i ]:picture )
|
||||
::oRightHeaderView:resizeSection( n-1, oFontMetrics:width( xVal, -1 ) + 8 )
|
||||
::oRightFooterView:resizeSection( n-1, oFontMetrics:width( xVal, -1 ) + 8 )
|
||||
ENDIF
|
||||
nLeftWidth += ::oRightHeaderView:sectionSize( n-1 )
|
||||
NEXT
|
||||
::oRightView:setFixedWidth( 4 + nLeftWidth )
|
||||
//::oRightHeaderView:setFixedWidth( nLeftWidth )
|
||||
::oRightFooterView:setFixedWidth( 4 + nLeftWidth )
|
||||
|
||||
ENDIF
|
||||
|
||||
IF ::nLeftFrozen == 0 .and. hb_isObject( ::oLeftView )
|
||||
::oLeftView:hide()
|
||||
::oLeftFooterView:hide()
|
||||
ELSEIF ::nLeftFrozen > 0 .and. hb_isObject( ::oLeftView )
|
||||
::oLeftView:show()
|
||||
::oLeftFooterView:show()
|
||||
ENDIF
|
||||
IF ::nRightFrozen == 0 .and. hb_isObject( ::oRightView )
|
||||
::oRightView:hide()
|
||||
::oRightFooterView:hide()
|
||||
ELSEIF ::nRightFrozen > 0 .and. hb_isObject( ::oRightView )
|
||||
::oRightView:show()
|
||||
::oRightFooterView:show()
|
||||
ENDIF
|
||||
|
||||
FOR i := 1 TO ::colCount
|
||||
IF ascan( ::aLeftFrozen, i ) > 0 .or. ascan( ::aRightFrozen, i ) > 0
|
||||
::oTableView:hideColumn( i - 1 )
|
||||
::oFooterView:setSectionHidden( i - 1, .t. )
|
||||
ELSE
|
||||
::oTableView:showColumn( i - 1 )
|
||||
::oFooterView:setSectionHidden( i - 1, .f. )
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
::setHorzScrollBarRange()
|
||||
|
||||
/* Tell Qt to Reload Everything */
|
||||
::oDbfModel:reset()
|
||||
//
|
||||
IF hb_isObject( ::oLeftDbfModel )
|
||||
::oLeftDbfModel:reset()
|
||||
ENDIF
|
||||
IF hb_isObject( ::oRightDbfModel )
|
||||
::oRightDbfModel:reset()
|
||||
ENDIF
|
||||
|
||||
RETURN Self
|
||||
|
||||
@@ -1951,18 +2214,15 @@ METHOD left() CLASS XbpBrowse
|
||||
|
||||
IF ::colPos > 1
|
||||
::colPos--
|
||||
n := ::oHHeaderView:sectionViewportPosition( ::colPos-1 )
|
||||
n := ::oHeaderView:sectionViewportPosition( ::colPos-1 )
|
||||
IF n < 0
|
||||
::oHHeaderView:setOffset( ::oHHeaderView:offSet() + n )
|
||||
::oHFooterView:setOffset( ::oHFooterView:offSet() + n )
|
||||
::oHeaderView:setOffset( ::oHeaderView:offSet() + n )
|
||||
::oFooterView:setOffset( ::oFooterView:offSet() + n )
|
||||
::setCurrentIndex( .t. )
|
||||
ELSE
|
||||
::setCurrentIndex( .f. )
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF ::rowPos == ::rowCount
|
||||
::updateVertScrollBar()
|
||||
ENDIF
|
||||
::oHScrollBar:setValue( ::colPos - 1 )
|
||||
|
||||
RETURN Self
|
||||
@@ -1975,18 +2235,18 @@ METHOD right() CLASS XbpBrowse
|
||||
IF ::colPos < ::colCount
|
||||
::colPos++
|
||||
|
||||
n := ::oHHeaderView:sectionViewportPosition( ::colPos - 1 )
|
||||
n1 := ::oHHeaderView:sectionSize( ::colPos-1 )
|
||||
n := ::oHeaderView:sectionViewportPosition( ::colPos - 1 )
|
||||
n1 := ::oHeaderView:sectionSize( ::colPos-1 )
|
||||
n2 := ::oViewport:width()
|
||||
IF n + n1 > n2
|
||||
nLnWidth := ::oTableView:lineWidth()
|
||||
IF n1 > n2
|
||||
::oHHeaderView:setOffset( ::oHHeaderView:sectionPosition( ::colPos - 1 ) )
|
||||
::oHFooterView:setOffset( ::oHHeaderView:sectionPosition( ::colPos - 1 ) )
|
||||
::oHeaderView:setOffset( ::oHeaderView:sectionPosition( ::colPos - 1 ) )
|
||||
::oFooterView:setOffset( ::oHeaderView:sectionPosition( ::colPos - 1 ) )
|
||||
|
||||
ELSE
|
||||
::oHHeaderView:setOffset( ::oHHeaderView:offSet()+(n1-(n2-n)+1) - nLnWidth )
|
||||
::oHFooterView:setOffset( ::oHFooterView:offSet()+(n1-(n2-n)+1) - nLnWidth )
|
||||
::oHeaderView:setOffset( ::oHeaderView:offSet()+(n1-(n2-n)+1) - nLnWidth )
|
||||
::oFooterView:setOffset( ::oFooterView:offSet()+(n1-(n2-n)+1) - nLnWidth )
|
||||
|
||||
ENDIF
|
||||
::setCurrentIndex( .t. )
|
||||
@@ -1994,10 +2254,6 @@ METHOD right() CLASS XbpBrowse
|
||||
::setCurrentIndex( .f. )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF ::rowPos == ::rowCount
|
||||
::updateVertScrollBar()
|
||||
ENDIF
|
||||
::oHScrollBar:setValue( ::colPos - 1 )
|
||||
|
||||
RETURN Self
|
||||
@@ -2010,18 +2266,14 @@ METHOD firstCol() CLASS XbpBrowse
|
||||
::setUnstable()
|
||||
::colPos := 1
|
||||
|
||||
n := ::oHHeaderView:sectionViewportPosition( ::colPos-1 )
|
||||
n := ::oHeaderView:sectionViewportPosition( ::colPos-1 )
|
||||
IF n < 0
|
||||
::oHHeaderView:setOffset( ::oHHeaderView:offSet() + n )
|
||||
::oHFooterView:setOffset( ::oHFooterView:offSet() + n )
|
||||
::oHeaderView:setOffset( ::oHeaderView:offSet() + n )
|
||||
::oFooterView:setOffset( ::oFooterView:offSet() + n )
|
||||
::setCurrentIndex( .t. )
|
||||
ELSE
|
||||
::setCurrentIndex( .f. )
|
||||
ENDIF
|
||||
|
||||
IF ::rowPos == ::rowCount
|
||||
::updateVertScrollBar()
|
||||
ENDIF
|
||||
::oHScrollBar:setValue( ::colPos - 1 )
|
||||
|
||||
RETURN Self
|
||||
@@ -2034,25 +2286,21 @@ METHOD lastCol() CLASS XbpBrowse
|
||||
::setUnstable()
|
||||
::colPos := ::colCount
|
||||
|
||||
n := ::oHHeaderView:sectionViewportPosition( ::colPos-1 )
|
||||
n1 := ::oHHeaderView:sectionSize( ::colPos-1 )
|
||||
n := ::oHeaderView:sectionViewportPosition( ::colPos-1 )
|
||||
n1 := ::oHeaderView:sectionSize( ::colPos-1 )
|
||||
n2 := ::oViewport:width()
|
||||
IF n + n1 > n2
|
||||
IF n1 > n2
|
||||
::oHHeaderView:setOffset( ::oHHeaderView:sectionPosition( ::colPos - 1 ) )
|
||||
::oHFooterView:setOffset( ::oHHeaderView:sectionPosition( ::colPos - 1 ) )
|
||||
::oHeaderView:setOffset( ::oHeaderView:sectionPosition( ::colPos - 1 ) )
|
||||
::oFooterView:setOffset( ::oHeaderView:sectionPosition( ::colPos - 1 ) )
|
||||
ELSE
|
||||
::oHHeaderView:setOffset( ::oHHeaderView:offSet()+(n1-(n2-n)+1) - ::oTableView:lineWidth() )
|
||||
::oHFooterView:setOffset( ::oHFooterView:offSet()+(n1-(n2-n)+1) - ::oTableView:lineWidth() )
|
||||
::oHeaderView:setOffset( ::oHeaderView:offSet()+(n1-(n2-n)+1) - ::oTableView:lineWidth() )
|
||||
::oFooterView:setOffset( ::oFooterView:offSet()+(n1-(n2-n)+1) - ::oTableView:lineWidth() )
|
||||
ENDIF
|
||||
::setCurrentIndex( .t. )
|
||||
ELSE
|
||||
::setCurrentIndex( .f. )
|
||||
ENDIF
|
||||
|
||||
IF ::rowPos == ::rowCount
|
||||
::updateVertScrollBar()
|
||||
ENDIF
|
||||
::oHScrollBar:setValue( ::colPos - 1 )
|
||||
|
||||
RETURN Self
|
||||
@@ -2061,7 +2309,7 @@ METHOD lastCol() CLASS XbpBrowse
|
||||
|
||||
METHOD home() CLASS XbpBrowse
|
||||
|
||||
::colPos := max( 1, ::oHHeaderView:visualIndexAt( 1 ) + 1 )
|
||||
::colPos := max( 1, ::oHeaderView:visualIndexAt( 1 ) + 1 )
|
||||
::setCurrentIndex( .t. )
|
||||
|
||||
RETURN Self
|
||||
@@ -2070,7 +2318,7 @@ METHOD home() CLASS XbpBrowse
|
||||
|
||||
METHOD end() CLASS XbpBrowse
|
||||
|
||||
::nRightVisible := ::oHHeaderView:visualIndexAt( ::oViewport:width()-2 ) + 1
|
||||
::nRightVisible := ::oHeaderView:visualIndexAt( ::oViewport:width()-2 ) + 1
|
||||
IF ::nRightVisible == 0
|
||||
::nRightVisible := ::colCount
|
||||
ENDIF
|
||||
@@ -2083,8 +2331,8 @@ METHOD end() CLASS XbpBrowse
|
||||
|
||||
METHOD panHome() CLASS XbpBrowse
|
||||
|
||||
::oHHeaderView:setOffset( 0 )
|
||||
::oHFooterView:setOffset( 0 )
|
||||
::oHeaderView:setOffset( 0 )
|
||||
::oFooterView:setOffset( 0 )
|
||||
::oDbfModel:reset()
|
||||
|
||||
RETURN Self
|
||||
@@ -2094,14 +2342,14 @@ METHOD panHome() CLASS XbpBrowse
|
||||
METHOD panEnd() CLASS XbpBrowse
|
||||
LOCAL nOffset
|
||||
|
||||
IF ::oHHeaderView:sectionSize( ::colCount - 1 ) > ::oViewport:width()
|
||||
nOffSet := ::oHHeaderView:sectionPosition( ::colCount - 1 )
|
||||
IF ::oHeaderView:sectionSize( ::colCount - 1 ) > ::oViewport:width()
|
||||
nOffSet := ::oHeaderView:sectionPosition( ::colCount - 1 )
|
||||
ELSE
|
||||
nOffSet := ::oHHeaderView:sectionPosition( ::colCount - 1 ) + ;
|
||||
::oHHeaderView:sectionSize( ::colCount - 1 ) - ::oViewport:width()
|
||||
nOffSet := ::oHeaderView:sectionPosition( ::colCount - 1 ) + ;
|
||||
::oHeaderView:sectionSize( ::colCount - 1 ) - ::oViewport:width()
|
||||
ENDIF
|
||||
::oHHeaderView:setOffset( nOffSet )
|
||||
::oHFooterView:setOffset( nOffSet )
|
||||
::oHeaderView:setOffset( nOffSet )
|
||||
::oFooterView:setOffset( nOffSet )
|
||||
::oDbfModel:reset()
|
||||
|
||||
RETURN Self
|
||||
@@ -2109,11 +2357,11 @@ METHOD panEnd() CLASS XbpBrowse
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
METHOD panLeft() CLASS XbpBrowse
|
||||
LOCAL nLeftVisible := ::oHHeaderView:visualIndexAt( 1 )+1
|
||||
LOCAL nLeftVisible := ::oHeaderView:visualIndexAt( 1 )+1
|
||||
|
||||
IF nLeftVisible > 1
|
||||
::oHHeaderView:setOffSet( ::oHHeaderView:sectionPosition( nLeftVisible - 2 ) )
|
||||
::oHFooterView:setOffSet( ::oHFooterView:sectionPosition( nLeftVisible - 2 ) )
|
||||
::oHeaderView:setOffSet( ::oHeaderView:sectionPosition( nLeftVisible - 2 ) )
|
||||
::oFooterView:setOffSet( ::oFooterView:sectionPosition( nLeftVisible - 2 ) )
|
||||
ENDIF
|
||||
::oDbfModel:reset()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user