2008-10-11 03:24 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/rtl/scrollbr.prg
  * harbour/source/rtl/getsys.prg
  * harbour/source/rtl/tpopup.prg
  * harbour/source/rtl/tgetlist.prg
  * harbour/source/rtl/radiogrp.prg
  * harbour/source/rtl/listbox.prg
  * harbour/source/rtl/checkbox.prg
  * harbour/source/rtl/browse.prg
  * harbour/source/rtl/tget.prg
  * harbour/source/rtl/ttopbar.prg
  * harbour/source/rtl/pushbtn.prg
  * harbour/source/rtl/tmenusys.prg
  * harbour/source/rtl/achoice.prg
  * harbour/source/rtl/teditor.prg
  * harbour/source/rtl/radiobtn.prg
  * harbour/source/rtl/tbrowse.prg
    * replaced DispOut() with hb_dispOut()
    * replaced DispBox() with hb_dispBox()
    % removed saving and restoring of cursor position in places where
      it's not longer necessary due to hb_dispOut()/hb_dispBox() usage
    % removed saving and restoring of SetColor() value in places where
      it's not longer necessary due to hb_dispOut()/hb_dispBox() usage
    % removed saving and restoring of MSetCursor(). If it's necessary
      low GT driver should hide and redraw mouse cursor before and after
      screen update. We do not have to make it manually

   The above modification gives faster code and allow to access screen
   from different threads simultaneously because functions like
   hb_dispOut() and hb_dispBox() are stateless and atomic in screen
   access. Not all .prg code has been updated yet. If someone is
   familiar with this code then please help. I'll add yet HB_SCROLL()
   function which will support additionally colors.
   Viktor if possible please verify this modifications.
This commit is contained in:
Przemyslaw Czerpak
2008-10-11 01:24:26 +00:00
parent aeb6b8686e
commit 9113680b5a
17 changed files with 191 additions and 270 deletions

View File

@@ -8,6 +8,41 @@
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2008-10-11 03:24 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/scrollbr.prg
* harbour/source/rtl/getsys.prg
* harbour/source/rtl/tpopup.prg
* harbour/source/rtl/tgetlist.prg
* harbour/source/rtl/radiogrp.prg
* harbour/source/rtl/listbox.prg
* harbour/source/rtl/checkbox.prg
* harbour/source/rtl/browse.prg
* harbour/source/rtl/tget.prg
* harbour/source/rtl/ttopbar.prg
* harbour/source/rtl/pushbtn.prg
* harbour/source/rtl/tmenusys.prg
* harbour/source/rtl/achoice.prg
* harbour/source/rtl/teditor.prg
* harbour/source/rtl/radiobtn.prg
* harbour/source/rtl/tbrowse.prg
* replaced DispOut() with hb_dispOut()
* replaced DispBox() with hb_dispBox()
% removed saving and restoring of cursor position in places where
it's not longer necessary due to hb_dispOut()/hb_dispBox() usage
% removed saving and restoring of SetColor() value in places where
it's not longer necessary due to hb_dispOut()/hb_dispBox() usage
% removed saving and restoring of MSetCursor(). If it's necessary
low GT driver should hide and redraw mouse cursor before and after
screen update. We do not have to make it manually
The above modification gives faster code and allow to access screen
from different threads simultaneously because functions like
hb_dispOut() and hb_dispBox() are stateless and atomic in screen
access. Not all .prg code has been updated yet. If someone is
familiar with this code then please help. I'll add yet HB_SCROLL()
function which will support additionally colors.
Viktor if possible please verify this modifications.
2008-10-11 03:06 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapigt.h
* harbour/source/rtl/gtapi.c
@@ -24,7 +59,6 @@
+ added HB_DISPBOX() function - works like DISPBOX() bit does not
change cursor position and is atomic for other threads
* harbour/include/hbapigt.h
* harbour/include/hbgtcore.h
* harbour/source/rtl/hbgtcore.c
@@ -127,7 +161,7 @@
For VC, see above.
- Removed HB_BUILD_ST undocumented option.
% Other minor cleanups.
* contrib/xhb/hbcompat.ch
* contrib/xhb/xhb.ch
! Moved __COPYFILE() translation to xhb.ch.

View File

@@ -467,7 +467,7 @@ FUNCTION AChoice( nTop, nLeft, nBottom, nRight, acItems, xSelect, xUserFunc, nPo
nUserFunc := Do( xUserFunc, nMode, nPos, nPos - nAtTop )
IF ISNUMBER( nUserFunc )
DO CASE
CASE nUserFunc == AC_ABORT .OR. nMode == AC_NOITEM
lFinished := .T.
@@ -482,12 +482,12 @@ FUNCTION AChoice( nTop, nLeft, nBottom, nRight, acItems, xSelect, xUserFunc, nPo
// this keystroke will be processed as a goto.
nMode := AC_GOTO
ENDCASE
IF nPos > 0 .AND. nMode != AC_GOTO
nRowsClr := Min( nNumRows, nItems )
nMode := Ach_Limits( @nFrstItem, @nLastItem, @nItems, bSelect, alSelect, acItems )
IF nMode == AC_NOITEM
nPos := 0
nAtTop := Max( 1, nPos - nNumRows + 1 )
@@ -495,23 +495,23 @@ FUNCTION AChoice( nTop, nLeft, nBottom, nRight, acItems, xSelect, xUserFunc, nPo
DO WHILE nPos < nLastItem .AND. !Eval( bSelect, alSelect[ nPos ] )
nPos++
ENDDO
IF nPos > nLastItem
nPos := BETWEEN( nFrstItem, nPos, nLastItem )
ENDIF
nAtTop := Min( nAtTop, nPos )
IF nAtTop + nNumRows - 1 > nItems
nAtTop := BETWEEN( 1, nPos - nNumRows + 1, nItems - nNumRows + 1 )
ENDIF
IF nAtTop < 1
nAtTop := 1
ENDIF
ENDIF
DispPage( acItems, alSelect, nTop, nLeft, nRight, nNumRows, nPos, nAtTop, nItems, bSelect, nRowsClr )
ENDIF
ELSE
@@ -542,8 +542,6 @@ STATIC PROCEDURE DispPage( acItems, alSelect, nTop, nLeft, nRight, nNumRows, nPo
LOCAL nCntr
LOCAL nRow // Screen row
LOCAL nIndex // Array index
LOCAL nSaveRow := Row() // Position at start of routine
LOCAL nSaveCol := Col() // Position at start of routine
DEFAULT nRowsClr TO nNumRows
@@ -558,14 +556,12 @@ STATIC PROCEDURE DispPage( acItems, alSelect, nTop, nLeft, nRight, nNumRows, nPo
DispLine( acItems[ nIndex ], nRow, nLeft, Eval( bSelect, alSelect[ nIndex ] ), nIndex == nPos, nRight - nLeft + 1 )
ELSE
ColorSelect( CLR_STANDARD )
DispOutAt( nRow, nLeft, Space( nRight - nLeft + 1 ) )
hb_dispOutAt( nRow, nLeft, Space( nRight - nLeft + 1 ) )
ENDIF
NEXT
DispEnd()
SetPos( nSaveRow, nSaveCol )
RETURN
STATIC PROCEDURE DispLine( cLine, nRow, nCol, lSelect, lHiLite, nNumCols )
@@ -573,7 +569,7 @@ STATIC PROCEDURE DispLine( cLine, nRow, nCol, lSelect, lHiLite, nNumCols )
ColorSelect( iif( lSelect .AND. ISCHARACTER( cLine ), ;
iif( lHiLite, CLR_ENHANCED, CLR_STANDARD ), CLR_UNSELECTED ) )
DispOutAt( nRow, nCol, iif( ISCHARACTER( cLine ), PadR( cLine, nNumCols ), Space( nNumCols ) ) )
hb_dispOutAt( nRow, nCol, iif( ISCHARACTER( cLine ), PadR( cLine, nNumCols ), Space( nNumCols ) ) )
ColorSelect( CLR_STANDARD )

View File

@@ -80,10 +80,10 @@ FUNCTION Browse( nTop, nLeft, nBottom, nRight )
nOldCursor := SetCursor( SC_NONE )
cOldScreen := SaveScreen( nTop, nLeft, nBottom, nRight )
DispBox( nTop, nLeft, nBottom, nRight, B_DOUBLE_SINGLE )
DispBox( nTop + 3, nLeft, nTop + 3, nLeft, chr( 198 ) )
DispBox( nTop + 3, nRight, nTop + 3, nRight, chr( 181 ) )
DispOutAt( nTop + 1, nLeft + 1, Space( nRight - nLeft - 1 ) )
hb_dispBox( nTop, nLeft, nBottom, nRight, B_DOUBLE_SINGLE )
hb_dispBox( nTop + 3, nLeft, nTop + 3, nLeft, chr( 198 ) )
hb_dispBox( nTop + 3, nRight, nTop + 3, nRight, chr( 181 ) )
hb_dispOutAt( nTop + 1, nLeft + 1, Space( nRight - nLeft - 1 ) )
oBrw := TBrowseDB( nTop + 2, nLeft + 1, nBottom - 1, nRight - 1 )
oBrw:HeadSep := " " + Chr( 205 )
@@ -293,18 +293,18 @@ STATIC PROCEDURE StatLine( oBrw, lAppend )
LOCAL nTop := oBrw:nTop - 1
LOCAL nRight := oBrw:nRight
DispOutAt( nTop, nRight - 27, "Record " )
hb_dispOutAt( nTop, nRight - 27, "Record " )
IF LastRec() == 0 .AND. ! lAppend
DispOutAt( nTop, nRight - 20, "<none> " )
hb_dispOutAt( nTop, nRight - 20, "<none> " )
ELSEIF RecNo() == LastRec() + 1
DispOutAt( nTop, nRight - 40, " " )
DispOutAt( nTop, nRight - 20, " <new>" )
hb_dispOutAt( nTop, nRight - 40, " " )
hb_dispOutAt( nTop, nRight - 20, " <new>" )
ELSE
DispOutAt( nTop, nRight - 40, iif( Deleted(), "<Deleted>", " " ) )
DispOutAt( nTop, nRight - 20, PadR( LTrim( Str( RecNo() ) ) + "/" + ;
LTrim( Str( LastRec() ) ), 16 ) + ;
iif( oBrw:HitTop(), "<bof>", " " ) )
hb_dispOutAt( nTop, nRight - 40, iif( Deleted(), "<Deleted>", " " ) )
hb_dispOutAt( nTop, nRight - 20, PadR( LTrim( Str( RecNo() ) ) + "/" + ;
LTrim( Str( LastRec() ) ), 16 ) + ;
iif( oBrw:HitTop(), "<bof>", " " ) )
ENDIF
RETURN

View File

@@ -189,23 +189,19 @@ METHOD hitTest( nMRow, nMCol ) CLASS CHECKBOX
METHOD display() CLASS CHECKBOX
LOCAL cOldColor := SetColor()
LOCAL nOldRow := Row()
LOCAL nOldCol := Col()
LOCAL lOldMCur := MSetCursor( .F. )
LOCAL cColor
LOCAL cStyle := ::cStyle
LOCAL cCaption
LOCAL nPos
DispBegin()
DispOutAt( ::nRow, ::nCol + 1, iif( ::lBuffer, SubStr( cStyle, 2, 1 ), SubStr( cStyle, 3, 1 ) ),;
hb_ColorIndex( ::cColorSpec, iif( ::lHasFocus, 1, 0 ) ) )
hb_dispOutAt( ::nRow, ::nCol + 1, iif( ::lBuffer, SubStr( cStyle, 2, 1 ), SubStr( cStyle, 3, 1 ) ),;
hb_ColorIndex( ::cColorSpec, iif( ::lHasFocus, 1, 0 ) ) )
SetColor( hb_ColorIndex( ::cColorSpec, 2 ) )
DispOutAt( ::nRow, ::nCol, Left( cStyle, 1 ) )
DispOutAt( ::nRow, ::nCol + 2, Right( cStyle, 1 ) )
cColor := hb_ColorIndex( ::cColorSpec, 2 )
hb_dispOutAt( ::nRow, ::nCol, Left( cStyle, 1 ), cColor )
hb_dispOutAt( ::nRow, ::nCol + 2, Right( cStyle, 1 ), cColor )
IF !Empty( cCaption := ::cCaption )
@@ -217,23 +213,20 @@ METHOD display() CLASS CHECKBOX
ENDIF
IF ::lHasFocus
SetColor( hb_ColorIndex( ::cColorSpec, 3 ) )
cColor := hb_ColorIndex( ::cColorSpec, 3 )
ENDIF
DispOutAt( ::nCapRow, ::nCapCol, cCaption )
hb_dispOutAt( ::nCapRow, ::nCapCol, cCaption, cColor )
IF !::lHasFocus .AND. nPos != 0
DispOutAt( ::nCapRow, ::nCapCol + nPos - 1, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, 3 ) )
hb_dispOutAt( ::nCapRow, ::nCapCol + nPos - 1, SubStr( cCaption, nPos, 1 ), ;
hb_ColorIndex( ::cColorSpec, 3 ) )
ENDIF
ENDIF
DispEnd()
MSetCursor( lOldMCur )
SetColor( cOldColor )
SetPos( nOldRow, nOldCol )
RETURN Self
METHOD bitmaps( aBitmaps ) CLASS CHECKBOX

View File

@@ -284,8 +284,6 @@ PROCEDURE __SetFormat( bFormat )
FUNCTION RangeCheck( oGet, xDummy, xLow, xHigh )
LOCAL xValue
LOCAL cMessage
LOCAL nOldRow
LOCAL nOldCol
HB_SYMBOL_UNUSED( xDummy )
@@ -300,21 +298,16 @@ FUNCTION RangeCheck( oGet, xDummy, xLow, xHigh )
ENDIF
IF Set( _SET_SCOREBOARD )
cMessage := Left( __NatMsg( _GET_RANGE_FROM ) + LTrim( Transform( xLow, "" ) ) + ;
__NatMsg( _GET_RANGE_TO ) + LTrim( Transform( xHigh, "" ) ), MaxCol() )
nOldRow := Row()
nOldCol := Col()
DispOutAt( SCORE_ROW, Min( 60, MaxCol() - Len( cMessage ) ), cMessage )
SetPos( nOldRow, nOldCol )
hb_dispOutAt( SCORE_ROW, Min( 60, MaxCol() - Len( cMessage ) ), cMessage )
DO WHILE NextKey() == 0
ENDDO
DispOutAt( SCORE_ROW, Min( 60, MaxCol() - Len( cMessage ) ), Space( Len( cMessage ) ) )
SetPos( nOldRow, nOldCol )
hb_dispOutAt( SCORE_ROW, Min( 60, MaxCol() - Len( cMessage ) ), Space( Len( cMessage ) ) )
ENDIF

View File

@@ -227,10 +227,9 @@ METHOD delItem( nPos )
METHOD display() CLASS LISTBOX
LOCAL cOldColor := SetColor()
LOCAL nOldRow := Row()
LOCAL nOldCol := Col()
LOCAL lOldMCur := MSetCursor( .F. )
LOCAL nOldRow
LOCAL nOldCol
LOCAL cOldColor
LOCAL nItem
LOCAL nEnd
@@ -243,7 +242,7 @@ METHOD display() CLASS LISTBOX
LOCAL cHotBox
LOCAL cCaption
LOCAL nPos
IF ::lHasFocus
cHotBox := ::cHotBox
cColor3 := hb_ColorIndex( ::cColorSpec, 2 )
@@ -262,11 +261,11 @@ METHOD display() CLASS LISTBOX
IF ::lDropDown
DispOutAt( nTop++, nLeft,;
hb_dispOutAt( nTop, nLeft,;
iif( ::nValue == 0, Space( nSize - 1 ), PadR( ::aItems[ ::nValue ][ _ITEM_cTEXT ], nSize - 1 ) ),;
cColorAny )
DispOut( ::cStyle, hb_ColorIndex( ::cColorSpec, 7 ) )
hb_dispOutAt( nTop++, nLeft + nSize - 1, ::cStyle, hb_ColorIndex( ::cColorSpec, 7 ) )
nEnd--
ENDIF
@@ -274,6 +273,10 @@ METHOD display() CLASS LISTBOX
IF ::lIsOpen
IF !Empty( cHotBox )
nOldRow := Row()
nOldCol := Col()
cOldColor := SetColor()
SetColor( hb_ColorIndex( ::cColorSpec, 4 ) )
Scroll( nTop, nLeft, ::nBottom, ::nRight )
DispBox( nTop, nLeft, ::nBottom, ::nRight, cHotBox )
@@ -282,6 +285,9 @@ METHOD display() CLASS LISTBOX
::oVScroll:display()
ENDIF
SetColor( cOldColor )
SetPos( nOldRow, nOldCol )
nTop++
nLeft++
nSize -= 2
@@ -294,7 +300,7 @@ METHOD display() CLASS LISTBOX
ENDIF
FOR nItem := ::nTopItem TO nEnd
DispOutAt( nTop++, nLeft, PadR( ::aItems[ nItem ][ _ITEM_cTEXT ], nSize ), iif( nItem == ::nValue, cColor4, cColor3 ) )
hb_dispOutAt( nTop++, nLeft, PadR( ::aItems[ nItem ][ _ITEM_cTEXT ], nSize ), iif( nItem == ::nValue, cColor4, cColor3 ) )
NEXT
ENDIF
@@ -307,19 +313,16 @@ METHOD display() CLASS LISTBOX
cCaption := Stuff( cCaption, nPos, 1, "" )
ENDIF
DispOutAt( ::nCapRow, ::nCapCol - 1, cCaption, hb_ColorIndex( ::cColorSpec, 5 ) )
hb_dispOutAt( ::nCapRow, ::nCapCol - 1, cCaption, hb_ColorIndex( ::cColorSpec, 5 ) )
IF nPos != 0
DispOutAt( ::nCapRow, ::nCapCol + nPos - 2, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, 6 ) )
hb_dispOutAt( ::nCapRow, ::nCapCol + nPos - 2, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, 6 ) )
ENDIF
ENDIF
DispEnd()
MSetCursor( lOldMCur )
SetColor( cOldColor )
SetPos( nOldRow, nOldCol )
RETURN Self

View File

@@ -205,11 +205,7 @@ METHOD hitTest( nMRow, nMCol ) CLASS PUSHBUTTON
METHOD display() CLASS PUSHBUTTON
LOCAL cOldColor := SetColor()
LOCAL nOldRow := Row()
LOCAL nOldCol := Col()
LOCAL lOldMCur := MSetCursor( .F. )
LOCAL cColor
LOCAL cStyle := ::cStyle
LOCAL cCaption := ::cCaption
LOCAL nRow := ::nRow
@@ -219,11 +215,11 @@ METHOD display() CLASS PUSHBUTTON
DispBegin()
IF ::lBuffer
SetColor( hb_ColorIndex( ::cColorSpec, 2 ) )
cColor := hb_ColorIndex( ::cColorSpec, 2 )
ELSEIF ::lHasFocus
SetColor( hb_ColorIndex( ::cColorSpec, 1 ) )
cColor := hb_ColorIndex( ::cColorSpec, 1 )
ELSE
SetColor( hb_ColorIndex( ::cColorSpec, 0 ) )
cColor := hb_ColorIndex( ::cColorSpec, 0 )
ENDIF
IF ( nPos := At( "&", cCaption ) ) == 0
@@ -238,30 +234,26 @@ METHOD display() CLASS PUSHBUTTON
nCol++
IF Len( cStyle ) == 2
DispOutAt( ::nRow, ::nCol, SubStr( cStyle, 1, 1 ) )
DispOutAt( ::nRow, ::nCol + Len( cCaption ) + 1, SubStr( cStyle, 2, 1 ) )
hb_dispOutAt( ::nRow, ::nCol, SubStr( cStyle, 1, 1 ), cColor )
hb_dispOutAt( ::nRow, ::nCol + Len( cCaption ) + 1, SubStr( cStyle, 2, 1 ), cColor )
ELSE
nRow++
DispBox( ::nRow, ::nCol, ::nRow + 2, ::nCol + Len( cCaption ) + 1, cStyle )
hb_dispBox( ::nRow, ::nCol, ::nRow + 2, ::nCol + Len( cCaption ) + 1, cStyle, cColor )
ENDIF
ENDIF
IF !Empty( cCaption )
DispOutAt( nRow, nCol, cCaption )
hb_dispOutAt( nRow, nCol, cCaption, cColor )
IF nPos != 0
DispOutAt( nRow, nCol + nPos - 1, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, 3 ) )
hb_dispOutAt( nRow, nCol + nPos - 1, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, 3 ) )
ENDIF
ENDIF
DispEnd()
MSetCursor( lOldMCur )
SetColor( cOldColor )
SetPos( nOldRow, nOldCol )
RETURN Self
METHOD bitmap( cBitmap ) CLASS PUSHBUTTON

View File

@@ -154,23 +154,18 @@ METHOD killFocus() CLASS RADIOBUTTN
RETURN Self
METHOD display() CLASS RADIOBUTTN
LOCAL cOldColor := SetColor()
LOCAL nOldRow := Row()
LOCAL nOldCol := Col()
LOCAL lOldMCur := MSetCursor( .F. )
LOCAL cColor
LOCAL cStyle := ::cStyle
LOCAL nPos
LOCAL cOldCaption
DispBegin()
SetColor( iif( ::lBuffer, hb_ColorIndex( ::cColorSpec, 3 ), hb_ColorIndex( ::cColorSpec, 1 ) ) )
SetPos( ::nRow, ::nCol )
DispOut( Left( cStyle, 1 ) )
DispOut( iif( ::lBuffer, SubStr( cStyle, 2, 1 ), SubStr( cStyle, 3, 1 ) ) )
DispOut( Right( cStyle, 1 ) )
cColor := iif( ::lBuffer, hb_ColorIndex( ::cColorSpec, 3 ), hb_ColorIndex( ::cColorSpec, 1 ) )
hb_dispOutAt( ::nRow, ::nCol, Left( cStyle, 1 ), cColor )
hb_dispOutAt( ::nRow, ::nCol + 1, iif( ::lBuffer, SubStr( cStyle, 2, 1 ), SubStr( cStyle, 3, 1 ) ), cColor )
hb_dispOutAt( ::nRow, ::nCol + 3, Right( cStyle, 1 ), cColor )
IF !Empty( cOldCaption := ::cCaption )
@@ -181,19 +176,15 @@ METHOD display() CLASS RADIOBUTTN
cOldCaption := Stuff( cOldCaption, nPos, 1, "" )
ENDIF
DispOutAt( ::nCapRow, ::nCapCol, cOldCaption, hb_ColorIndex( ::cColorSpec, 4 ) )
hb_dispOutAt( ::nCapRow, ::nCapCol, cOldCaption, hb_ColorIndex( ::cColorSpec, 4 ) )
IF nPos != 0
DispOutAt( ::nCapRow, ::nCapCol + nPos - 1, SubStr( cOldCaption, nPos, 1 ), iif( ::lHasfocus, hb_ColorIndex( ::cColorSpec, 6 ), hb_ColorIndex( ::cColorSpec, 5 ) ) )
hb_dispOutAt( ::nCapRow, ::nCapCol + nPos - 1, SubStr( cOldCaption, nPos, 1 ), iif( ::lHasfocus, hb_ColorIndex( ::cColorSpec, 6 ), hb_ColorIndex( ::cColorSpec, 5 ) ) )
ENDIF
ENDIF
DispEnd()
MSetCursor( lOldMCur )
SetColor( cOldColor )
SetPos( nOldRow, nOldCol )
RETURN Self
METHOD isAccel( xKey ) CLASS RADIOBUTTN

View File

@@ -161,11 +161,6 @@ METHOD delItem( nPos ) CLASS RADIOGROUP
METHOD display() CLASS RADIOGROUP
LOCAL cOldColor := SetColor()
LOCAL nOldRow := Row()
LOCAL nOldCol := Col()
LOCAL lOldMCur := MSetCursor( .F. )
LOCAL cSelBox
LOCAL cUnSelBox
LOCAL cCaption
@@ -181,12 +176,10 @@ METHOD display() CLASS RADIOGROUP
cUnSelBox := ::cHotBox
ENDIF
SetColor( hb_ColorIndex( ::cColorSpec, 0 ) )
IF !Empty( cSelBox )
DispBox( ::nTop, ::nLeft, ::nBottom, ::nRight, cSelBox )
hb_dispBox( ::nTop, ::nLeft, ::nBottom, ::nRight, cSelBox, hb_ColorIndex( ::cColorSpec, 0 ) )
ELSEIF !Empty( cUnSelBox )
DispBox( ::nTop, ::nLeft, ::nBottom, ::nRight, cUnSelBox )
hb_dispBox( ::nTop, ::nLeft, ::nBottom, ::nRight, cUnSelBox, hb_ColorIndex( ::cColorSpec, 0 ) )
ENDIF
IF !Empty( cCaption := ::cCaption )
@@ -199,10 +192,10 @@ METHOD display() CLASS RADIOGROUP
ENDIF
ENDIF
DispOutAt( ::nCapRow, ::nCapCol, cCaption, hb_ColorIndex( ::cColorSpec, 1 ) )
hb_dispOutAt( ::nCapRow, ::nCapCol, cCaption, hb_ColorIndex( ::cColorSpec, 1 ) )
IF nPos != 0
DispOutAt( ::nCapRow, ::nCapCol + nPos - 1, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, 2 ) )
hb_dispOutAt( ::nCapRow, ::nCapCol + nPos - 1, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, 2 ) )
ENDIF
ENDIF
@@ -211,10 +204,6 @@ METHOD display() CLASS RADIOGROUP
DispEnd()
MSetCursor( lOldMCur )
SetColor( cOldColor )
SetPos( nOldRow, nOldCol )
RETURN Self
METHOD getAccel( xValue ) CLASS RADIOGROUP

View File

@@ -113,11 +113,7 @@ ENDCLASS
METHOD display() CLASS SCROLLBAR
LOCAL cOldColor
LOCAL nOldRow
LOCAL nOldCol
LOCAL lOldMCur
LOCAL cColor
LOCAL cStyle
LOCAL nOffset
LOCAL nStart
@@ -126,46 +122,37 @@ METHOD display() CLASS SCROLLBAR
IF ::CalcThumbPos()
cOldColor := SetColor()
nOldRow := Row()
nOldCol := Col()
lOldMCur := MSetCursor( .F. )
cStyle := ::cStyle
nOffset := ::nOffset
nStart := ::nStart
nEnd := ::nEnd - 1
DispBegin()
SetColor( hb_ColorIndex( ::cColorSpec, 0 ) )
cColor := hb_ColorIndex( ::cColorSpec, 0 )
IF ::nOrient == SCROLL_VERTICAL
FOR nPos := nStart + 1 TO nEnd
DispOutAt( nPos, nOffset, SubStr( cStyle, 2, 1 ) )
hb_dispOutAt( nPos, nOffset, SubStr( cStyle, 2, 1 ), cColor )
NEXT
SetColor( hb_ColorIndex( ::cColorSpec, 1 ) )
DispOutAt( nStart, nOffset, SubStr( cStyle, 1, 1 ) )
DispOutAt( nStart + ::nThumbPos, nOffset, SubStr( cStyle, 3, 1 ) )
DispOutAt( nEnd + 1, nOffset, SubStr( cStyle, 4, 1 ) )
cColor := hb_ColorIndex( ::cColorSpec, 1 )
hb_dispOutAt( nStart, nOffset, SubStr( cStyle, 1, 1 ), cColor )
hb_dispOutAt( nStart + ::nThumbPos, nOffset, SubStr( cStyle, 3, 1 ), cColor )
hb_dispOutAt( nEnd + 1, nOffset, SubStr( cStyle, 4, 1 ), cColor )
ELSE
DispOutAt( nOffset, nStart + 1, Replicate( SubStr( cStyle, 2, 1 ), nEnd - nStart ) )
SetColor( hb_ColorIndex( ::cColorSpec, 1 ) )
DispOutAt( nOffset, nStart, SubStr( cStyle, 1, 1 ) )
DispOutAt( nOffset, nStart + ::nThumbPos, SubStr( cStyle, 3, 1 ) )
DispOutAt( nOffset, nEnd + 1, SubStr( cStyle, 4, 1 ) )
hb_dispOutAt( nOffset, nStart + 1, Replicate( SubStr( cStyle, 2, 1 ), nEnd - nStart ), cColor )
cColor := hb_ColorIndex( ::cColorSpec, 1 )
hb_dispOutAt( nOffset, nStart, SubStr( cStyle, 1, 1 ), cColor )
hb_dispOutAt( nOffset, nStart + ::nThumbPos, SubStr( cStyle, 3, 1 ), cColor )
hb_dispOutAt( nOffset, nEnd + 1, SubStr( cStyle, 4, 1 ), cColor )
ENDIF
DispEnd()
MSetCursor( lOldMCur )
SetColor( cOldColor )
SetPos( nOldRow, nOldCol )
RETURN .T.
ENDIF
@@ -174,10 +161,6 @@ METHOD display() CLASS SCROLLBAR
METHOD update() CLASS SCROLLBAR
LOCAL nOldRow
LOCAL nOldCol
LOCAL lOldMCur
LOCAL nOldThumbPos := ::nThumbPos
IF ISBLOCK( ::bSBlock )
@@ -186,25 +169,18 @@ METHOD update() CLASS SCROLLBAR
IF ::CalcThumbPos() .AND. nOldThumbPos != ::nThumbPos
nOldRow := Row()
nOldCol := Col()
lOldMCur := MSetCursor( .F. )
DispBegin()
IF ::nOrient == SCROLL_VERTICAL
DispOutAt( ::nStart + nOldThumbPos, ::nOffSet, SubStr( ::cStyle, 2, 1), hb_ColorIndex( ::cColorSpec, 0 ) )
DispOutAt( ::nStart + ::nThumbPos, ::nOffset, SubStr( ::cStyle, 3, 1 ), hb_ColorIndex( ::cColorSpec, 1 ) )
hb_dispOutAt( ::nStart + nOldThumbPos, ::nOffSet, SubStr( ::cStyle, 2, 1), hb_ColorIndex( ::cColorSpec, 0 ) )
hb_dispOutAt( ::nStart + ::nThumbPos, ::nOffset, SubStr( ::cStyle, 3, 1 ), hb_ColorIndex( ::cColorSpec, 1 ) )
ELSE
DispOutAt( ::nOffset, ::nStart + nOldThumbPos, SubStr( ::cStyle, 2, 1 ), hb_ColorIndex( ::cColorSpec, 0 ) )
DispOutAt( ::nOffset, ::nStart + ::nThumbPos, SubStr( ::cStyle, 3, 1 ), hb_ColorIndex( ::cColorSpec, 1 ) )
hb_dispOutAt( ::nOffset, ::nStart + nOldThumbPos, SubStr( ::cStyle, 2, 1 ), hb_ColorIndex( ::cColorSpec, 0 ) )
hb_dispOutAt( ::nOffset, ::nStart + ::nThumbPos, SubStr( ::cStyle, 3, 1 ), hb_ColorIndex( ::cColorSpec, 1 ) )
ENDIF
DispEnd()
MSetCursor( lOldMCur )
SetPos( nOldRow, nOldCol )
RETURN .T.
ENDIF

View File

@@ -398,8 +398,8 @@ STATIC PROCEDURE _DISP_FHSEP( nRow, nType, cColor, aColData )
ELSEIF aCol[ _TBCI_LASTSPACE ] < 0
cSep := Left( cSep, Len( cSep ) + aCol[ _TBCI_LASTSPACE ] )
ENDIF
DispOutAt( nRow, aCol[ _TBCI_COLPOS ] - aCol[ _TBCI_FROZENSPACE ], ;
cSep, cColor )
hb_dispOutAt( nRow, aCol[ _TBCI_COLPOS ] - aCol[ _TBCI_FROZENSPACE ], ;
cSep, cColor )
ELSEIF aCol[ _TBCI_CELLWIDTH ] > 0
lFirst := .F.
ENDIF
@@ -417,8 +417,8 @@ STATIC PROCEDURE _DISP_FHNAME( nRow, nHeight, nLeft, nRight, nType, nColor, aCol
LOCAL nWidth
LOCAL lFirst := .T.
DispBox( nRow, nLeft, nRow + nHeight - 1, nRight, ;
Space( 9 ), aColors[ _TBC_CLR_STANDARD ] )
hb_dispBox( nRow, nLeft, nRow + nHeight - 1, nRight, ;
Space( 9 ), aColors[ _TBC_CLR_STANDARD ] )
FOR EACH aCol IN aColData
IF aCol[ _TBCI_COLPOS ] != NIL
@@ -434,10 +434,10 @@ STATIC PROCEDURE _DISP_FHNAME( nRow, nHeight, nLeft, nRight, nType, nColor, aCol
nWidth += aCol[ _TBCI_LASTSPACE ]
ENDIF
FOR nPos := 1 TO nHeight
DispOutAt( nRow + nPos - 1, nCol, ;
PadR( hb_tokenGet( cName, nPos, _TBR_CHR_LINEDELIMITER ), nWidth ), ;
iif( aCol[ _TBCI_DEFCOLOR ][ nColor ] == 0, "N/N", ;
aColors[ aCol[ _TBCI_DEFCOLOR ][ nColor ] ] ) )
hb_dispOutAt( nRow + nPos - 1, nCol, ;
PadR( hb_tokenGet( cName, nPos, _TBR_CHR_LINEDELIMITER ), nWidth ), ;
iif( aCol[ _TBCI_DEFCOLOR ][ nColor ] == 0, "N/N", ;
aColors[ aCol[ _TBCI_DEFCOLOR ][ nColor ] ] ) )
NEXT
ENDIF
NEXT
@@ -454,7 +454,7 @@ METHOD dispFrames() CLASS TBROWSE
DispBegin()
IF ::lInvalid .AND. !Empty( ::cBorder )
DispBox( ::nTop, ::nLeft, ::nBottom, ::nRight, ::cBorder, ::colorValue( _TBC_CLR_STANDARD ) )
hb_dispBox( ::nTop, ::nLeft, ::nBottom, ::nRight, ::cBorder, ::colorValue( _TBC_CLR_STANDARD ) )
ENDIF
IF ::nHeadHeight > 0
@@ -498,7 +498,7 @@ METHOD dispRow( nRow ) CLASS TBROWSE
nRowPos := ::n_Top + ::nHeadHeight + iif( ::lHeadSep, 1, 0 ) + nRow - 1
cStdColor := ::colorValue( _TBC_CLR_STANDARD )
DispBox( nRowPos, ::n_Left, nRowPos, ::n_Right, Space( 9 ), cStdColor )
hb_dispBox( nRowPos, ::n_Left, nRowPos, ::n_Right, Space( 9 ), cStdColor )
lFirst := .T.
FOR EACH aCol, cValue, aColors IN ::aColData, ::aCellValues[ nRow ], ::aCellColors[ nRow ]
@@ -507,21 +507,21 @@ METHOD dispRow( nRow ) CLASS TBROWSE
IF lFirst
lFirst := .F.
ELSEIF aCol[ _TBCI_SEPWIDTH ] > 0
DispOutAt( nRowPos, aCol[ _TBCI_COLPOS ] - aCol[ _TBCI_FROZENSPACE ], ;
aCol[ _TBCI_COLSEP ], cStdColor )
hb_dispOutAt( nRowPos, aCol[ _TBCI_COLPOS ] - aCol[ _TBCI_FROZENSPACE ], ;
aCol[ _TBCI_COLSEP ], cStdColor )
nColPos += aCol[ _TBCI_SEPWIDTH ]
ENDIF
nColPos += aCol[ _TBCI_CELLPOS ]
cColor := ::colorValue( aColors[ _TBC_CLR_STANDARD ] )
IF aCol[ _TBCI_LASTSPACE ] < 0
DispOutAt( nRowPos, nColPos, ;
Left( cValue, ::n_Right - nColPos + 1 ), cColor )
hb_dispOutAt( nRowPos, nColPos, ;
Left( cValue, ::n_Right - nColPos + 1 ), cColor )
ELSE
#ifdef HB_C52_STRICT
DispOutAt( nRowPos, nColPos, ;
Left( cValue, aCol[ _TBCI_COLWIDTH ] - aCol[ _TBCI_CELLPOS ] ), cColor )
hb_dispOutAt( nRowPos, nColPos, ;
Left( cValue, aCol[ _TBCI_COLWIDTH ] - aCol[ _TBCI_CELLPOS ] ), cColor )
#else
DispOutAt( nRowPos, nColPos, cValue, cColor )
hb_dispOutAt( nRowPos, nColPos, cValue, cColor )
#endif
ENDIF
ENDIF
@@ -1839,7 +1839,7 @@ METHOD hiLite() CLASS TBROWSE
IF ::n_Col + Len( cValue ) > _TBR_COORD( ::n_Right )
cValue := Left( cValue, _TBR_COORD( ::n_Right ) - ::n_Col + 1 )
ENDIF
DispOut( cValue, cColor )
hb_dispOutAt( ::n_Row, ::n_Col, cValue, cColor )
SetPos( ::n_Row, ::n_Col )
::lHiLited := .T.
ENDIF
@@ -1866,7 +1866,7 @@ METHOD deHilite() CLASS TBROWSE
IF ::n_Col + Len( cValue ) > _TBR_COORD( ::n_Right )
cValue := Left( cValue, _TBR_COORD( ::n_Right ) - ::n_Col + 1 )
ENDIF
DispOut( cValue, cColor )
hb_dispOutAt( ::n_Row, ::n_Col, cValue, cColor )
SetPos( ::n_Row, ::n_Col )
ENDIF
ENDIF

View File

@@ -405,11 +405,12 @@ METHOD display() CLASS HBEditor
LOCAL i
LOCAL nOCol := ::Col()
LOCAL nORow := ::Row()
LOCAL nOCur := SetCursor( SC_NONE )
LOCAL cOldColor
DispBegin()
FOR i := 0 TO Min( ::nNumRows - 1, ::naTextLen - 1 )
DispOutAt( ::nTop + i, ::nLeft, PadR( SubStr( ::GetLine( ::nFirstRow + i ), ::nFirstCol, ::nNumCols ), ::nNumCols, " " ), ::LineColor( ::nFirstRow + i ) )
hb_dispOutAt( ::nTop + i, ::nLeft, PadR( SubStr( ::GetLine( ::nFirstRow + i ), ::nFirstCol, ::nNumCols ), ::nNumCols, " " ), ::LineColor( ::nFirstRow + i ) )
NEXT
// Clear rest of editor window (needed when deleting lines of text)
@@ -419,20 +420,16 @@ METHOD display() CLASS HBEditor
SetColor( cOldColor )
ENDIF
SetCursor( nOCur )
::SetPos( nORow, nOCol )
DispEnd()
RETURN Self
// Redraws current screen line
METHOD RefreshLine() CLASS HBEditor
LOCAL nOCol := ::Col()
LOCAL nORow := ::Row()
DispOutAt( ::Row(), ::nLeft, PadR( SubStr( ::GetLine( ::nRow ), ::nFirstCol, ::nNumCols ), ::nNumCols, " " ), ::LineColor( ::nRow ) )
::SetPos( nORow, nOCol )
hb_dispOutAt( ::Row(), ::nLeft, PadR( SubStr( ::GetLine( ::nRow ), ::nFirstCol, ::nNumCols ), ::nNumCols, " " ), ::LineColor( ::nRow ) )
RETURN Self
@@ -440,16 +437,14 @@ METHOD RefreshLine() CLASS HBEditor
METHOD RefreshColumn() CLASS HBEditor
LOCAL i
LOCAL nOCol := ::Col()
LOCAL nORow := ::Row()
LOCAL nOCur := SetCursor( SC_NONE )
DispBegin()
FOR i := 0 TO Min( ::nNumRows - 1, ::naTextLen - 1 )
DispOutAt( ::nTop + i, nOCol, SubStr( ::GetLine( ::nFirstRow + i ), ::nCol, 1 ), ::LineColor( ::nFirstRow + i ) )
hb_dispOutAt( ::nTop + i, ::Col(), SubStr( ::GetLine( ::nFirstRow + i ), ::nCol, 1 ), ::LineColor( ::nFirstRow + i ) )
NEXT
SetCursor( nOCur )
::SetPos( nORow, nOCol )
DispEnd()
RETURN Self

View File

@@ -306,9 +306,9 @@ METHOD display() CLASS Get
ENDIF
ENDIF
DispOutAt( ::nCapRow, ::nCapCol, cCaption, hb_ColorIndex( ::cColorSpec, GET_CLR_CAPTION ) )
hb_dispOutAt( ::nCapRow, ::nCapCol, cCaption, hb_ColorIndex( ::cColorSpec, GET_CLR_CAPTION ) )
IF nPos > 0
DispOutAt( ::nCapRow, ::nCapCol + nPos - 1, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, GET_CLR_ACCEL ) )
hb_dispOutAt( ::nCapRow, ::nCapCol + nPos - 1, SubStr( cCaption, nPos, 1 ), hb_ColorIndex( ::cColorSpec, GET_CLR_ACCEL ) )
ENDIF
ENDIF
@@ -318,18 +318,18 @@ METHOD display() CLASS Get
IF !::lSuppDisplay .OR. nDispPos != ::nOldPos
DispOutAt( ::nRow, ::nCol,;
iif( ::lHideInput, PadR( Replicate( SubStr( ::cStyle, 1, 1 ), Len( RTrim( cBuffer ) ) ), ::nDispLen ), SubStr( cBuffer, nDispPos, ::nDispLen ) ),;
hb_ColorIndex( ::cColorSpec, iif( ::hasFocus, GET_CLR_ENHANCED, GET_CLR_UNSELECTED ) ) )
hb_dispOutAt( ::nRow, ::nCol,;
iif( ::lHideInput, PadR( Replicate( SubStr( ::cStyle, 1, 1 ), Len( RTrim( cBuffer ) ) ), ::nDispLen ), SubStr( cBuffer, nDispPos, ::nDispLen ) ),;
hb_ColorIndex( ::cColorSpec, iif( ::hasFocus, GET_CLR_ENHANCED, GET_CLR_UNSELECTED ) ) )
IF Set( _SET_DELIMITERS ) .AND. !::hasFocus
#ifdef HB_COMPAT_C53
DispOutAt( ::nRow, ::nCol - 1, SubStr( Set( _SET_DELIMCHARS ), 1, 1 ), hb_ColorIndex( ::cColorSpec, GET_CLR_UNSELECTED ) )
DispOutAt( ::nRow, ::nCol + ::nDispLen, SubStr( Set( _SET_DELIMCHARS ), 2, 1 ), hb_ColorIndex( ::cColorSpec, GET_CLR_UNSELECTED ) )
hb_dispOutAt( ::nRow, ::nCol - 1, SubStr( Set( _SET_DELIMCHARS ), 1, 1 ), hb_ColorIndex( ::cColorSpec, GET_CLR_UNSELECTED ) )
hb_dispOutAt( ::nRow, ::nCol + ::nDispLen, SubStr( Set( _SET_DELIMCHARS ), 2, 1 ), hb_ColorIndex( ::cColorSpec, GET_CLR_UNSELECTED ) )
#else
/* NOTE: C5.2 will use the default color. We're replicating this here. [vszakats] */
DispOutAt( ::nRow, ::nCol - 1, SubStr( Set( _SET_DELIMCHARS ), 1, 1 ) )
DispOutAt( ::nRow, ::nCol + ::nDispLen, SubStr( Set( _SET_DELIMCHARS ), 2, 1 ) )
hb_dispOutAt( ::nRow, ::nCol - 1, SubStr( Set( _SET_DELIMCHARS ), 1, 1 ) )
hb_dispOutAt( ::nRow, ::nCol + ::nDispLen, SubStr( Set( _SET_DELIMCHARS ), 2, 1 ) )
#endif
ENDIF
ENDIF

View File

@@ -792,21 +792,9 @@ METHOD GetActive( oGet ) CLASS HBGetList
METHOD ShowScoreboard() CLASS HBGetList
LOCAL nRow
LOCAL nCol
LOCAL nOldCursor
IF Set( _SET_SCOREBOARD )
nRow := Row()
nCol := Col()
nOldCursor := SetCursor( SC_NONE )
DispOutAt( SCORE_ROW, SCORE_COL, iif( Set( _SET_INSERT ), __NatMsg( _GET_INSERT_ON ), __NatMsg( _GET_INSERT_OFF ) ) )
SetPos( nRow, nCol )
SetCursor( nOldCursor )
hb_dispOutAt( SCORE_ROW, SCORE_COL, iif( Set( _SET_INSERT ), __NatMsg( _GET_INSERT_ON ), __NatMsg( _GET_INSERT_OFF ) ) )
ENDIF
@@ -814,22 +802,14 @@ METHOD ShowScoreboard() CLASS HBGetList
METHOD DateMsg() CLASS HBGetList
LOCAL nRow
LOCAL nCol
IF Set( _SET_SCOREBOARD )
nRow := Row()
nCol := Col()
DispOutAt( SCORE_ROW, SCORE_COL, __NatMsg( _GET_INVD_DATE ) )
SetPos( nRow, nCol )
hb_dispOutAt( SCORE_ROW, SCORE_COL, __NatMsg( _GET_INVD_DATE ) )
DO WHILE NextKey() == 0
ENDDO
DispOutAt( SCORE_ROW, SCORE_COL, Space( Len( __NatMsg( _GET_INVD_DATE ) ) ) )
SetPos( nRow, nCol )
hb_dispOutAt( SCORE_ROW, SCORE_COL, Space( Len( __NatMsg( _GET_INVD_DATE ) ) ) )
ENDIF
@@ -1613,7 +1593,7 @@ METHOD ShowGetMsg( oGet, aMsg ) CLASS HBGetList
IF !Empty( cMsg )
lMOldState := MSetCursor( .F. )
DispOutAt( aMsg[ MSGROW ], aMsg[ MSGLEFT ], PadC( cMsg, aMsg[ MSGRIGHT ] - aMsg[ MSGLEFT ] + 1 ), aMsg[ MSGCOLOR ] )
hb_dispOutAt( aMsg[ MSGROW ], aMsg[ MSGLEFT ], PadC( cMsg, aMsg[ MSGRIGHT ] - aMsg[ MSGLEFT ] + 1 ), aMsg[ MSGCOLOR ] )
MSetCursor( lMOldState )
ENDIF
ENDIF

View File

@@ -620,7 +620,6 @@ METHOD MHitTest( oNewMenu, nNewLevel, nNewItem ) CLASS HBMenuSys
METHOD ShowMsg( lMode ) CLASS HBMenuSys
LOCAL nCurrent
LOCAL cMsg
LOCAL lMOldState := MSetCursor( .F. )
IF ISLOGICAL( ::lOldMsgFlag ) .AND. ::lOldMsgFlag
RestScreen( ::nMsgRow, ::nMsgLeft, ::nMsgRow, ::nMsgRight, ::cMsgSaveS )
@@ -635,7 +634,7 @@ METHOD ShowMsg( lMode ) CLASS HBMenuSys
( nCurrent := ::oMenu:current ) != 0 .AND. ;
!Empty( cMsg := ::oMenu:getItem( nCurrent ):message )
DispOutAt( ::nMsgRow, ::nMsgLeft, PadC( cMsg, ::nMsgRight - ::nMsgLeft + 1 ), ::cMsgColor )
hb_dispOutAt( ::nMsgRow, ::nMsgLeft, PadC( cMsg, ::nMsgRight - ::nMsgLeft + 1 ), ::cMsgColor )
ENDIF
::cOldMessage := cMsg
@@ -643,8 +642,6 @@ METHOD ShowMsg( lMode ) CLASS HBMenuSys
ENDIF
MSetCursor( lMOldState )
RETURN .T.
/* NOTE: Generates the somewhat internal, yet widely used message line format of CA-Cl*pper 5.3

View File

@@ -136,7 +136,7 @@ METHOD addItem( oItem ) CLASS POPUPMENU
AAdd( ::aItems, oItem )
::nItemCount++
::nWidth := Max( __CapMetrics( oItem ), ::nWidth )
ENDIF
@@ -193,17 +193,13 @@ METHOD delItem( nPos ) CLASS POPUPMENU
METHOD display() CLASS POPUPMENU
LOCAL nOldRow
LOCAL nOldCol
LOCAL lOldMCur
LOCAL nTop
LOCAL nLeft
LOCAL aItems
LOCAL nTop
LOCAL nLeft
LOCAL aItems
LOCAL nCurrent
LOCAL nLen
LOCAL nLen
LOCAL nPos
LOCAL nWidth
LOCAL nWidth
LOCAL oPopup
LOCAL nHotKeyPos
LOCAL cCaption
@@ -211,10 +207,6 @@ METHOD display() CLASS POPUPMENU
IF ::isOpen()
nOldRow := Row()
nOldCol := Col()
lOldMCur := MSetCursor( .F. )
::setMetrics()
nTop := ::nTop
@@ -225,11 +217,11 @@ METHOD display() CLASS POPUPMENU
nWidth := ::nWidth
DispBegin()
DispBox( nTop, nLeft, ::nBottom, ::nRight, ;
SubStr( ::cBorder, 1, 8 ) + " ", ;
hb_ColorIndex( ::cColorSpec, 5 ) )
hb_dispBox( nTop, nLeft, ::nBottom, ::nRight, ;
SubStr( ::cBorder, 1, 8 ) + " ", ;
hb_ColorIndex( ::cColorSpec, 5 ) )
#ifdef HB_EXTENSION
IF ::shadowed
hb_Shadow( nTop + 1, nLeft + 1, ::nBottom + 1, ::nRight + 1 )
@@ -243,7 +235,7 @@ METHOD display() CLASS POPUPMENU
IF aItems[ nPos ]:caption == MENU_SEPARATOR
DispOutAt( nTop, nLeft - 1, SubStr( ::cBorder, 9, 1 ) + Replicate( SubStr( ::cBorder, 10, 1 ), nWidth ) + SubStr( ::cBorder, 11, 1 ), hb_ColorIndex( ::cColorSpec, 5 ) )
hb_dispOutAt( nTop, nLeft - 1, SubStr( ::cBorder, 9, 1 ) + Replicate( SubStr( ::cBorder, 10, 1 ), nWidth ) + SubStr( ::cBorder, 11, 1 ), hb_ColorIndex( ::cColorSpec, 5 ) )
ELSE
cCaption := PadR( aItems[ nPos ]:caption, nWidth - 1 )
@@ -283,18 +275,15 @@ METHOD display() CLASS POPUPMENU
cCaption := Stuff( cCaption, nHotKeyPos, 1, "" )
ENDIF
DispOutAt( nTop, nLeft, cCaption, hb_ColorIndex( ::cColorSpec, iif( nPos == nCurrent, 1, iif( aItems[ nPos ]:enabled, 0, 4 ) ) ) )
hb_dispOutAt( nTop, nLeft, cCaption, hb_ColorIndex( ::cColorSpec, iif( nPos == nCurrent, 1, iif( aItems[ nPos ]:enabled, 0, 4 ) ) ) )
IF aItems[ nPos ]:enabled .AND. nHotKeyPos != 0
DispOutAt( nTop, nLeft + nHotKeyPos - 1, SubStr( cCaption, nHotKeyPos, 1 ), hb_ColorIndex( ::cColorSpec, iif( nPos == nCurrent, 3, 2 ) ) )
hb_dispOutAt( nTop, nLeft + nHotKeyPos - 1, SubStr( cCaption, nHotKeyPos, 1 ), hb_ColorIndex( ::cColorSpec, iif( nPos == nCurrent, 3, 2 ) ) )
ENDIF
ENDIF
NEXT
DispEnd()
MSetCursor( lOldMCur )
SetPos( nOldRow, nOldCol )
DispEnd()
ENDIF

View File

@@ -143,10 +143,6 @@ METHOD delItem( nPos ) CLASS TOPBARMENU
METHOD display() CLASS TOPBARMENU
LOCAL nOldRow := Row()
LOCAL nOldCol := Col()
LOCAL lOldMCur := MSetCursor( .F. )
LOCAL nRow := ::nRow
LOCAL nLeft := ::nLeft
LOCAL nRight := ::nRight
@@ -165,7 +161,7 @@ METHOD display() CLASS TOPBARMENU
DispBegin()
DispOutAt( nRow, nLeft, Space( nRight - nLeft + 1 ), cColor1 )
hb_dispOutAt( nRow, nLeft, Space( nRight - nLeft + 1 ), cColor1 )
FOR nItem := 1 TO nItemCount
@@ -200,12 +196,12 @@ METHOD display() CLASS TOPBARMENU
ENDIF
ENDIF
DispOutAt( nRow, nLeft, cCaption,;
hb_dispOutAt( nRow, nLeft, cCaption,;
iif( nItem == nCurrent, cColor2,;
iif( aItems[ nItem ]:enabled, cColor1, hb_ColorIndex( ::cColorSpec, 4 ) ) ) )
IF aItems[ nItem ]:enabled .AND. nPos > 0
DispOutAt( nRow, nLeft + nPos - 1, SubStr( cCaption, nPos, 1 ),;
hb_dispOutAt( nRow, nLeft + nPos - 1, SubStr( cCaption, nPos, 1 ),;
iif( nItem == nCurrent, hb_ColorIndex( ::cColorSpec, 3 ), hb_ColorIndex( ::cColorSpec, 2 ) ) )
ENDIF
@@ -221,9 +217,6 @@ METHOD display() CLASS TOPBARMENU
DispEnd()
SetPos( nOldRow, nOldCol )
MSetCursor( lOldMCur )
RETURN Self
METHOD getFirst() CLASS TOPBARMENU