FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour SCROLL con twbrowse de Hernán
Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
SCROLL con twbrowse de Hernán
Posted: Tue Apr 03, 2007 04: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)

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 los cambios que todo eso implica.


Gracias
Pedro Gonzalez
Posts: 8
Joined: Tue Oct 24, 2006 11:32 AM
SCROLL con twbrowse de Hernán
Posted: Wed Apr 04, 2007 11:56 AM

Pedro,

a mi me pasa algo parecido. Si compilo con FWH 2.7 los controles de Repag,Avpag,Up,Down en el Browse no se actualizan y los registros se muestran mal.
Sin embargo si compilo con FWH 2.4 va todo perfecto.

No encuentro solución al respecto.
LORENZO.

Posts: 383
Joined: Tue Oct 11, 2005 01:01 PM
SCROLL con twbrowse de Hernán
Posted: Wed Apr 04, 2007 02:05 PM
Mas o menos resuelto...

En la clase scrllbar.prg de FW yo tenía activada esta funcion:


METHOD SetPage( nSize, lReDraw ) CLASS TScrollBar


   local nFlags

   DEFAULT lRedraw := .f.

   if ! Empty( ::hWnd )
      nFlags = SB_CTL
   else
      if ::lVertical
         nFlags = SB_VERT
      else
         nFlags = SB_HORZ
      endif
   endif
   SetScrollInfo( If( ! Empty( ::hWnd ), ::hWnd, ::oWnd:hWnd ),;
                  nFlags, nSize, lReDraw )

return nil



Desactivandola como viene de serie (no me dibuja las barras con dimension variable de acuerdo a la cantidad de registros), y con lo que modifiqué en la clase de twbrowse de Hernán, se resuelve el problema.


Los cambios fueron los siguientes:

nLParam := nHiWord( nWParam ) // pgf 
nWParam := nLoWord( nWParam ) // pgf



o como lo hice realmente, copiando de la twbrowse original:

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

  nWParam := nScrollCode // pgf
  nLParam := nPos // pgf

   if GetFocus() != ::hWnd
      SetFocus( ::hWnd )
   endif

  IF nScrHandle == 0 // pgf

   do case
      case nWParam == SB_LINEUP 
...
...



Ahora me funciona.

Tu problema no lo he tenido, estas seguro que usas la ultima version de twbrowse? la 17?

Recompilaste toda la clase twbrowse para fwh2.7?

Saludos
Pedro Gonzalez
Posts: 25
Joined: Wed Mar 14, 2007 01:58 PM
SCROLL con twbrowse de Hernán
Posted: Thu Apr 05, 2007 11:44 AM
Senhores,


Vc tem que colocar a Twbrowse , antes da FIVEHx.LIB e FiveHC.LIB, como abaixo:

C_LIB_INSTALL%\c0w32.obj=1
C:\LIBTER\LIB97\TWBRW97.LIB=2
C:\FWH\LIB\Fivehx.lib=3
C:\fwh\LIB\Fivehc.lib=4
%HB_LIB_INSTALL%\rtl.lib=5
%HB_LIB_INSTALL%\vm.lib=6
%HB_LIB_INSTALL%\gtgui.lib=7
%HB_LIB_INSTALL%\lang.lib=8

Ate mais
Cleber Ribeiro Conde

Krc Sistemas

FWH 7.1 / xHarbour 0.99.71 / xMate/ SqlLib
Posts: 84
Joined: Fri Oct 07, 2005 04:51 PM
SCROLL con twbrowse de Hernán
Posted: Thu Apr 05, 2007 01:30 PM

Voy a chequear la existencia del problema. :o

Salu2 :D

Continue the discussion