ExploreBar y Expandir/Retraer Paneles

ExploreBar y Expandir/Retraer Paneles

Postby Xevi » Sat Dec 23, 2017 9:42 pm

He aislado el código, a la mínima expresión, sin fuentes, imagenes fuera de 4 de fwh, y el resultado es el que comento...
Al iniciar la aplicación/ventana, se muestra la barra Scroll vertical, cuando los paneles están sin expandir y no deberia de mostrarse, pues caben perfectamente en la zona del ExplBar.
Es como si cogiera la altura de TODOS los paneles expandidos y por eso muestra la barra Scroll Vertical.

Si al iniciar la aplicación, se pincha en cualquier panel para expandirlo, luego desaparece la barra scroll, como si hiciera el refresh y recontara el espacio de alto que ocupa, para mostrar/ocultar la barra.
Eso es lo que deberia de hacer al iniciar la aplicación o al ocultar los paneles.
¿Como se puede hacer que cuando se haga ocultar el panel por código llame al evento recalcula/refresca altura para mostrar/ocultar la barra Scroll Vertical ???


Code: Select all  Expand view

#include "FiveWin.ch"

function Main()

   local oWnd, oExBar, oPanel1, oPanel2, oPanel3, oPanel4, oPanel5, oPanel6
   local bClick := { | o | MsgInfo( o:GetText() ) }
   Local nPanel, nItem

   DEFINE WINDOW oWnd FROM 1, 1 TO 750, 1450 PIXEL TITLE "FWH Class TExplorerBar"

*   oExBar = TExplorerBar():New() //Asi SI funciona y no aparece la barra Scroll, pero ocupa TODA la ventana
   oExBar = TExplorerBar():New( 0, 0, 325, 700, oWnd )

   oPanel1 = oExBar:AddPanel( "PANEL1" )
   oPanel1:AddLink( "Primer item", bClick, "C:\FWH\bitmaps\16x16\additem.bmp" )
   oPanel1:AddLink( "Segundo item", bClick, "C:\FWH\bitmaps\16x16\copy.bmp" )
   oPanel1:AddLink( "Otro item", bClick, )
   oPanel1:AddLink( "Otro más", bClick, )
   oPanel1:AddLink( "Otro... y van 5", bClick, )

   oPanel2 = oExBar:AddPanel( "PANEL 2" )
   oPanel2:AddLink( "Primer item", bClick, "C:\FWH\bitmaps\16x16\additem.bmp" )
   oPanel2:AddLink( "Segundo item", bClick, "C:\FWH\bitmaps\16x16\copy.bmp" )
   oPanel2:AddLink( "Otro item", bClick, )

   oPanel3 = oExBar:AddPanel( "PANEL 3" )
   oPanel4 = oExBar:AddPanel( "PANEL 4" )
   oPanel5 = oExBar:AddPanel( "PANEL 5" )
   oPanel5 = oExBar:AddPanel( "PANEL 6" )

   oExBar:Refresh()

   // Oculto TODOS los paneles EXCEPTO el primero
   WITH OBJECT oExBar
   For nPanel := 2 to 6
      :aPanels[nPanel]:nHeight = :aPanels[nPanel]:nTitleHeight
      For nItem:=nPanel+1 To Len (:aPanels)
        :aPanels[nItem]:nTop -= :aPanels[nPanel]:nBodyHeight
      Next
      :aPanels[nPanel]:lCollapsed := .T.   // muda o icone de expandido para comprimido
   Next 
   END WITH

oExBar:Refresh()
//Aparece la Barra Scroll Vertical, como si no tuviera en cuenta que los Paneles estan sin expandir
//Aunque fuerze a Refrescar el ExplBar después de ocultar paneles

   ACTIVATE WINDOW oWnd CENTERED

return nil
 


No me vale hacer mas largo el ExplBar... pues luego habrian items/paneles escondidos debajo de la ventana, al ser más largo el ExplBar que la ventana.

Supongo que el error (mio) está al ocultar los paneles,... alguna cosa falta para que se recalcule el alto TOTAL de los panels+items visibles para que aparezca o no la barra Scroll Vertical.

Gracias.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona

Re: ExploreBar y Expandir/Retraer Paneles

Postby Xevi » Sat Dec 23, 2017 10:10 pm

Después de repasarme un poco la Clase TExplBar...

La solución

:CheckScroll()

Después de ocultar los paneles, y funciona como es debido. Ya no muestra la barra Scroll al iniciar.
Un Saludo,
Xevi.

Aprendiz de la vida!!!
User avatar
Xevi
 
Posts: 169
Joined: Wed Nov 29, 2017 11:42 am
Location: Girona


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 12 guests