SCROLL con twbrowse de Hernán

SCROLL con twbrowse de Hernán

Postby pymsoft » 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)

Code: Select all  Expand view
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
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby lorenzo » 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.
lorenzo
 
Posts: 8
Joined: Tue Oct 24, 2006 11:32 am

Postby pymsoft » Wed Apr 04, 2007 2:05 pm

Mas o menos resuelto...

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


Code: Select all  Expand view
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:

Code: Select all  Expand view
nLParam := nHiWord( nWParam ) // pgf
nWParam := nLoWord( nWParam ) // pgf



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

Code: Select all  Expand view
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
User avatar
pymsoft
 
Posts: 383
Joined: Tue Oct 11, 2005 1:01 pm
Location: Savona - Italia

Postby KRCNET » 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
KRCNET
 
Posts: 25
Joined: Wed Mar 14, 2007 1:58 pm
Location: Belo Horizonte/MG/Brasil

Postby Hernan Diego Ceccarelli » Thu Apr 05, 2007 1:30 pm

Voy a chequear la existencia del problema. :o

Salu2 :D
User avatar
Hernan Diego Ceccarelli
 
Posts: 84
Joined: Fri Oct 07, 2005 4:51 pm
Location: Rosario - Santa Fe - Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: russimicro and 52 guests