SCROLL con twbrowse de Hernán
Posted: Tue Apr 03, 2007 4:30 pm
Me puse a mirar por que motivo no me funcionan las barras de scroll con el TWBrowse modificado por Hernán (nunca me funcionó con la version a 32 bits)
Me di cuenta que el problema esta acá: (mirando la twbrowse que viene de serie con FWH, en la que si funcionan las barras de scroll)
Ahora me da un problema diferente, cuando hago click en la barra y voy al final, no me mueve al final, alguien tiene alguna idea?, solo a mi me pasa?, alguien me puede mandar la ultima version de twbrowse? o al menos el metodo que hace el scroll asi lo comparo con el que estoy modificando yo?
Estoy usando la version 17 de twbrowse, uso FWH 2.7 y xHarbour 0.99.51 y por ahora no puedo actualizar de version, con _ que todo eso implica.
Gracias
Me di cuenta que el problema esta acá: (mirando la twbrowse que viene de serie con FWH, en la que si funcionan las barras de scroll)
Code: Select all
METHOD VScroll( nWParam, nLParam ) CLASS TWBrowse
local nLines := ::nRowCount()
local nLen
local nScrollCode := nLoWord( nWParam ) // pgf
local nPos := nHiWord( nWParam ) // pgf
local nScrHandle := nLParam // pgf
// WriteInfoTXT( "1) " + ALLTRIM( STR( nWParam ) ) + " nLParam: " + ALLTRIM( STR( nLParam ) ), , "VSCROLL.TXT", .T. )
nWParam := nScrollCode // pgf
nLParam := nPos // pgf
// WriteInfoTXT( "2) " + ALLTRIM( STR( nWParam ) ) + " nLParam: " + ALLTRIM( STR( nLParam ) ), , "VSCROLL.TXT", .T. )
if GetFocus() != ::hWnd
SetFocus( ::hWnd )
endif
IF nScrHandle == 0
do case
case nWParam == SB_LINEUP
::GoUp()
case nWParam == SB_LINEDOWN
::GoDown()
case nWParam == SB_PAGEUP
::PageUp()
case nWParam == SB_PAGEDOWN
::PageDown()
case nWParam == SB_TOP
::GoTop()
case nWParam == SB_BOTTOM
::GoBottom()
case nWParam == SB_THUMBPOSITION
if ( ::nLen := Eval( ::bLogicLen ) ) < 1
return 0
endif
if nLParam <= 1 // CeSoTech /// == 0
::GoTop()
elseif nLParam == ::oVScroll:GetRange()[ 2 ]
::GoBottom()
else
::lHitTop = .f.
::lHitBottom = .f.
// CeSoTech //
If ::bGoLogicPos != Nil // Si tiene soporte de ir a un nKeyNo
CursorWait()
Eval( ::bGoLogicPos, Int( nLParam / 100 * ::nLen ) )
::oVScroll:SetPos( _POSVSCROLL_ )
::Refresh()
::nRowPos:= 1 // Para asegurarnos que vaya donde corresponde
CursorArrow()
if ::bChange != nil
Eval( ::bChange, Self )
endif
return 0
Else // Lo por defecto de FW
CursorWait()
::Skip( nLParam - ::oVScroll:GetPos() )
CursorArrow()
EndIf
endif
::oVScroll:SetPos( nLParam )
nLen = Eval( ::bLogicLen )
if nLParam - ::oVScroll:nMin < nLines
::nRowPos = 1
endif
if ::oVScroll:nMax - nLParam < Min( nLines, nLen )
::nRowPos = Min( nLines, nLen ) - ( ::oVScroll:nMax - nLParam )
endif
::Refresh()
if ::bChange != nil
Eval( ::bChange, Self )
endif
otherwise
return nil
endcase
ENDIF
return 0
Ahora me da un problema diferente, cuando hago click en la barra y voy al final, no me mueve al final, alguien tiene alguna idea?, solo a mi me pasa?, alguien me puede mandar la ultima version de twbrowse? o al menos el metodo que hace el scroll asi lo comparo con el que estoy modificando yo?
Estoy usando la version 17 de twbrowse, uso FWH 2.7 y xHarbour 0.99.51 y por ahora no puedo actualizar de version, con _ que todo eso implica.
Gracias