TTaskPanel collapsed como?

Post Reply
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

TTaskPanel collapsed como?

Post by leandro »

Buenas tardes para todos, estoy usando la clase TExplorerBar, pero requiero que algunos de los paneles se muestren colapsados o contraídos, pero no encuentro la forma.

Lo intente así, pero no funciona.

Code: Select all

   oPanel5 = oExpPqr:AddPanel( "SALIDA", ".\Res\salida.png",20 ,25, 0  )
   oPanel5:SetColor( RGB( 0, 0, 255 ), CLR_WHITE)
   oPanel5:AddLink( "Cerrar Ventana", {|| oWChPq:End() }, "#8606" )
   oPanel5:lCollapsed := .T.
De antemano gracias

LEANDRO AREVALO
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: TTaskPanel collapsed como?

Post by cnavarro »

Debería funcionar con lCollapsed := .T.
Prueba despues de definir todos tus panels, poniendo esto: oExplBar:CheckScroll()
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: TTaskPanel collapsed como?

Post by Cgallegoa »

Leandro, Cristobal

Parece que es un bug en la clase TTaskPanel

El proceso de expandir/contraer el panel se da en el Method LButtonUp

Code: Select all

METHOD LButtonUp( nRow, nCol, nFlags ) CLASS TTaskPanel

   local n, hWndFocus

   if nRow < ::nTitleHeight

    // En la siguiente línea se produce el problema, pues no importa si le indicas lCollapsed .T. o .F., prevalecerá
    // el resultado de ::nHeight > ::nTitleHeight , ignorando el valor que le hayas dado a lCollapsed
      if ( ::lCollapsed := ::nHeight > ::nTitleHeight )   
         ::nHeight = ::nTitleHeight
         for n = ::nIndex  + 1 to Len( ::oWnd:aPanels )
            ::oWnd:aPanels[ n ]:nTop -= ::nBodyHeight
         next

        ....
 
Una solución temporal y a medio pelo, es que luego de crear el panel que quieres monstrar contraído escribas:

Code: Select all

oPanel1:nHeight := oPanel1:nTitleHeight
De esta manera lo pondrá como quieres. El problema..... es que al expandirlo nuevamente no controla bien el alto total del objeto panel.

Te toca ir probando, pero creo que por ahi van los tiros, mientras los gurús de FW nos dan la pauta para una correcta solución.
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: TTaskPanel collapsed como?

Post by Cgallegoa »

Cgallegoa wrote:Leandro, Cristobal

Parece que es un bug en la clase TTaskPanel

El proceso de expandir/contraer el panel se da en el Method LButtonUp

Code: Select all

METHOD LButtonUp( nRow, nCol, nFlags ) CLASS TTaskPanel

   local n, hWndFocus

   if nRow < ::nTitleHeight

    // En la siguiente línea se produce el problema, pues no importa si le indicas lCollapsed .T. o .F., prevalecerá
    // el resultado de ::nHeight > ::nTitleHeight , ignorando el valor que le hayas dado a lCollapsed
      if ( ::lCollapsed := ::nHeight > ::nTitleHeight )   
         ::nHeight = ::nTitleHeight
         for n = ::nIndex  + 1 to Len( ::oWnd:aPanels )
            ::oWnd:aPanels[ n ]:nTop -= ::nBodyHeight
         next

        ....
 
Una solución temporal y a medio pelo, es que luego de crear el panel que quieres mostrar contraído escribas:

Code: Select all

oPanel1:nHeight := oPanel1:nTitleHeight
De esta manera lo pondrá como quieres. El problema..... es que al expandirlo nuevamente no controla bien el alto total del objeto panel.

Te toca ir probando, pero creo que por ahi van los tiros, mientras los gurús de FW nos dan la pauta para una correcta solución.
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
EBM
Posts: 123
Joined: Tue Oct 11, 2005 8:22 pm
Location: Guadalajara, Jal Mexico

Re: TTaskPanel collapsed como?

Post by EBM »

Hola Leando,

Como bien dice Carlos, es un bug en la clase, yo lo he "medio solucionado" de la siguiente forma aunque a veces y dependiendo la resolucion del monitor
no me respeta bien el scroll vertical al expandir/contraer, pero de alguna forma me funciona de momento. Esto lo vi en algun post de otro colega que no recuerdo el nombre, sólo lo adapté a mis necesidades, espero te funcione.

Lo que hice fue agregarle un método a la clase ExplBar asi:

EXTEND CLASS TExplorerBar WITH METHOD Collapse

y despues en mi codigo, llamo al metodo asi:

oExplBar:Collapse( aPanel, 2 ) // <-- Estoy contrayendo el Panel 2
aPanel[ 2 ]:lCollapsed := .t.

Y aqui te paso el metodo:

STATIC FUNCTION Collapse( aPanel, nCual ) // Metodo de TExplorerBar
LOCAL Self := HB_QSelf(), c

aPanel[ nCual ]:nHeight := aPanel[ nCual ]:nTitleHeight

For c := nCual + 1 To Len( aPanel )
aPanel[ c ]:nTop -= aPanel[ nCual ]:nBodyHeight
Next

Self:Refresh()
Self:CheckScroll()

Return NIL

Saludos!

Eduardo Borondón Muñiz
User avatar
leandro
Posts: 958
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia
Contact:

Re: TTaskPanel collapsed como?

Post by leandro »

Gracias a todos por las respuestas.

Cristobal, coloque la linea de código de mencionaste, pero no ocurre nada que pueda notar.

Carlos de la manera que dices, obtengo el siguiente resultado:

Image

Voy a intentar de la manera que dice eduardo y comento.
Saludos
LEANDRO ALFONSO
SISTEMAS LYMA - BASE
Bogotá (Colombia)
[ FWH 19.09 ] [ xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) ] [ Embarcadero C++ 7.30 for Win32 ]
Post Reply