FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour BUG EN TExplorerBar
Posts: 132
Joined: Thu Mar 08, 2007 06:12 PM
BUG EN TExplorerBar
Posted: Thu Sep 20, 2012 07:15 PM
Saludos !

Antonio / Daniel Ejecunten este test y utilizen el scrrol para ir al final y despues contraen el ultimo panel vernan como el primer panel no se pinta correctamente

Se necesita la lib hbmisc para harbour / libmisc para xharbour

Code (fw): Select all Collapse
#include "fivewin.ch"
#include "Splitter.ch"
*--
Function Main()
*--
   
   LOCAL oWnd, oExpBar, oSpl
   LOCAL oPanel1, oPanel2, oPanel3, oPanel4
   LOCAL aMeses1 := AMONTHS()
   LOCAL aMeses2 := AMONTHS()
   LOCAL aMeses3 := AMONTHS()
   LOCAL aMeses4 := AMONTHS()
   LOCAL bClick := { | o | MsgInfo( o:GetText() ) }
   *--
   DEFINE WINDOW oWnd TITLE "FWH Class TExplorerBar"
   
   oWnd:SetSize( 350, 600 )

   oExpBar = TExplorerBar():New()
   *--
   oPanel1 = oExpBar:AddPanel( " Estadisticas de Compras "  )
   oPanel1:lSpecial:=.T.
   AEVAL( aMeses1, {|cMes| oPanel1:AddLink( cMes, bClick, "additem" ) } )
   *--
   oPanel2 = oExpBar:AddPanel( " Estadisticas de Ventas "  )
   AEVAL( aMeses2, {|cMes| oPanel2:AddLink( cMes, bClick, "additem" ) } )
   *--
   oPanel3 = oExpBar:AddPanel( " Estadisticas de Ventas "  )
   AEVAL( aMeses3, {|cMes| oPanel3:AddLink( cMes, bClick, "additem" ) } )
   
   oWnd:oClient = oExpBar
   ACTIVATE WINDOW oWnd Maximized
 
RETURN( NIL )


Fwh 12.04 / Borland 5.8 Harbour 3.2
Harbour / Bcc / MinGW / Fwh 13.9
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: BUG EN TExplorerBar
Posted: Fri Sep 21, 2012 09:21 PM

Hola;
quise probar el sample. Pero no tengo la funcion aMonths, en que lib esta?

gracias

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: BUG EN TExplorerBar
Posted: Sat Sep 22, 2012 02:36 AM
Mario

compubrion wrote:Se necesita la lib hbmisc para harbour / libmisc para xharbour
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: BUG EN TExplorerBar
Posted: Sat Sep 22, 2012 01:52 PM

gracias!

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 1380
Joined: Fri Oct 14, 2005 01:28 PM
Re: BUG EN TExplorerBar
Posted: Sat Sep 22, 2012 01:58 PM

Amigos;
Previamente al post de Daniel, probé haciendo:
aMeses1 := {"ENE", "FEB", "MAR","ABR","MAY","JUN","JUL","AGO","SEP","OCT","NOV","DIC"}
aMeses2 := ...

Y me sucedió que:
1) No responde al movimiento de la barra vertical mediante el scroll del mouse
2) Arrastro la barra hacia abajo, y pinta ok
3) Haco un click en la parte superior, de la barra de despl., en un lugar vacio; y el repintado es incoherente

O ser, no descubrí nada nuevo :) , es como lo informa "compubrion"
Uso FWH 12.04 - BCC582

Resistencia - "Ciudad de las Esculturas"

Chaco - Argentina
Posts: 132
Joined: Thu Mar 08, 2007 06:12 PM
Re: BUG EN TExplorerBar
Posted: Sun Sep 23, 2012 03:30 PM
Saludos !

El BUG al que hago referencia, es en el repintado del panel, les muestro imagenes


Deslizo la barra de scrool al final de la ventana ( hasta abajo ) como muestra la imagen



Luego contraigo el ultimo panel, desaparece la barra de scrool, pero no repinta el panel como muestar la image

Harbour / Bcc / MinGW / Fwh 13.9
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: BUG EN TExplorerBar
Posted: Sun Sep 23, 2012 05:34 PM

Visto el error, estamos trabajando para solucionarlo, gracias :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: BUG EN TExplorerBar
Posted: Sun Sep 23, 2012 08:27 PM
Arreglado. El Metodo CheckSroll() queda así:

Code (fw): Select all Collapse
METHOD CheckScroll() CLASS TExplorerBar

   local nLastRow
   local oLastItem
   local nPos

   oLastItem = ATail( ::aPanels )
   
   nLastRow = ::nVirtualTop + oLastItem:nTop + oLastItem:nTotalHeight
   
   if nLastRow > ::nHeight - ::nVirtualTop
      ::nVirtualHeight = nLastRow
      SetScrollRangeX( ::hWnd, 1, 0, ::nVirtualHeight - 1 ) 

      ::oVScroll:SetPage( ::nHeight, .F. )
      ::oVScroll:SetPos( ::nVirtualTop )
      ::lSBVisible = .T.
   else 
      ::nVirtualTop = 0
      ::nVirtualHeight = ::nHeight
      SetScrollRangeX( ::hWnd, 1, 0, 0 )
      ::lSBVisible = .F.
   endif
      
return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 132
Joined: Thu Mar 08, 2007 06:12 PM
Re: BUG EN TExplorerBar
Posted: Mon Sep 24, 2012 01:38 AM

Gracias Antonio, por la pronta respuesta, se soluciona en parte.

Si usamos el mismo ejemplo que expongo y contraemos el segundo panel la barra de scroll desaparece y hace el repintado correctamente, pero si contraemos el ultimo panel no hace la misma operecaión. creo que aun falta afinarla un poco mas.

Saludos !

Cruz Alfredo Oses

Harbour / Bcc / MinGW / Fwh 13.9
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: BUG EN TExplorerBar
Posted: Mon Sep 24, 2012 01:42 AM
Cruz,

Este es el ejemplo que he probado. Por favor, pruébalo. Aqui parece funcionar bien:

Code (fw): Select all Collapse
#include "FiveWin.ch"

//----------------------------------------------------------------------------//

function Main()

   local oWnd, oExBar, oPanel1, oPanel2, oPanel3, oPanel4
   local bClick := { | o | MsgInfo( o:GetText() ) }
      
   DEFINE WINDOW oWnd TITLE "FWH Class TExplorerBar"
   
   oWnd:SetSize( 350, 600 )

   oExBar = TExplorerBar():New()

   oPanel1 = oExBar:AddPanel( "Uno" )
   oPanel1:lSpecial = .T.
   oPanel1:AddLink( "enero" )
   oPanel1:AddLink( "febrero" )
   oPanel1:AddLink( "marzo" )
   oPanel1:AddLink( "abril" )
   oPanel1:AddLink( "marzo" )
   oPanel1:AddLink( "abril" )
   oPanel1:AddLink( "mayo" )
   oPanel1:AddLink( "junio" )
   oPanel1:AddLink( "julio" )
   oPanel1:AddLink( "agosto" )
   oPanel1:AddLink( "septiembre" )
   oPanel1:AddLink( "octubre" )
   oPanel1:AddLink( "noviembre" )
   oPanel1:AddLink( "diciembre" )
      
   oPanel2 = oExBar:AddPanel( "Dos" )
   oPanel2:AddLink( "enero" )
   oPanel2:AddLink( "febrero" )
   oPanel2:AddLink( "marzo" )
   oPanel2:AddLink( "abril" )
   oPanel2:AddLink( "marzo" )
   oPanel2:AddLink( "abril" )
   oPanel2:AddLink( "mayo" )
   oPanel2:AddLink( "junio" )
   oPanel2:AddLink( "julio" )
   oPanel2:AddLink( "agosto" )
   oPanel2:AddLink( "septiembre" )
   oPanel2:AddLink( "octubre" )
   oPanel2:AddLink( "noviembre" )
   oPanel2:AddLink( "diciembre" )

   oPanel3 = oExBar:AddPanel( "Tres" )
   oPanel3:AddLink( "enero" )
   oPanel3:AddLink( "febrero" )
   oPanel3:AddLink( "marzo" )
   oPanel3:AddLink( "abril" )
   oPanel3:AddLink( "marzo" )
   oPanel3:AddLink( "abril" )
   oPanel3:AddLink( "mayo" )
   oPanel3:AddLink( "junio" )
   oPanel3:AddLink( "julio" )
   oPanel3:AddLink( "agosto" )
   oPanel3:AddLink( "septiembre" )
   oPanel3:AddLink( "octubre" )
   oPanel3:AddLink( "noviembre" )
   oPanel3:AddLink( "diciembre" )

   oWnd:oClient = oExBar

   ACTIVATE WINDOW oWnd

return nil

//----------------------------------------------------------------------------//
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 132
Joined: Thu Mar 08, 2007 06:12 PM
Re: BUG EN TExplorerBar
Posted: Mon Sep 24, 2012 02:19 AM
Antonio, te muestro las imagenes con tu ejemplo, fijate en la barra de scroll y los paneles activos, creo que alli esta el mal comportamiento de la clase





Harbour / Bcc / MinGW / Fwh 13.9
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: BUG EN TExplorerBar
Posted: Mon Sep 24, 2012 08:30 AM
Faltaba comprobar si el último item estaba cerrado o abierto:

Code (fw): Select all Collapse
   nLastRow = ::nVirtualTop + oLastItem:nTop + ;
              If( ! oLastItem:lCollapsed, oLastItem:nTotalHeight,;
                  oLastItem:nTitleHeight )


El método queda asi:
Code (fw): Select all Collapse
METHOD CheckScroll() CLASS TExplorerBar

   local nLastRow
   local oLastItem
   local nPos

   oLastItem = ATail( ::aPanels )
   
   nLastRow = ::nVirtualTop + oLastItem:nTop + ;
              If( ! oLastItem:lCollapsed, oLastItem:nTotalHeight,;
                  oLastItem:nTitleHeight ) 
   
   if nLastRow > ::nHeight - ::nVirtualTop
      ::nVirtualHeight = nLastRow
      SetScrollRangeX( ::hWnd, 1, 0, ::nVirtualHeight - 1 ) 

      ::oVScroll:SetPage( ::nHeight, .F. )
      ::oVScroll:SetPos( ::nVirtualTop )
      ::lSBVisible = .T.
   else 
      ::nVirtualTop = 0
      ::nVirtualHeight = ::nHeight
      SetScrollRangeX( ::hWnd, 1, 0, 0 )
      ::lSBVisible = .F.
   endif
      
return nil


gracias! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 132
Joined: Thu Mar 08, 2007 06:12 PM
Re: BUG EN TExplorerBar
Posted: Mon Sep 24, 2012 02:15 PM

Saludos !

Ahora si trabaja como debe ser

Gracias :D

Cruz Alfredo Oses

Harbour / Bcc / MinGW / Fwh 13.9

Continue the discussion