Página 1 de 1

TExplorerBar

Publicado: Vie Feb 10, 2006 3:14 am
por Yamil Bracho
Me gustaria que al seleccionar un TExplorerGroup diferente al que tengo
abierto, esete se cierre y abra el otro, es decir que solo haya uno
expandido a la vez
Es posible ?

TExplorerBar

Publicado: Vie Feb 10, 2006 10:58 am
por jfgimenez
Yamil,
> Me gustaria que al seleccionar un TExplorerGroup diferente al que tengo
> abierto, esete se cierre y abra el otro, es decir que solo haya uno
> expandido a la vez
> Es posible ?
Haría falta un evento OnItemExpand para controlarlo, que no existe
actualmente. Bueno, ya sí, porque lo acabo de poner ;-)
Añade lo siguiente a algún prg de tu proyecto:
//---------------------------------------------------------- ----------------
CLASS TExplorerBar FROM XExplorerBar
EVENT OnItemExpand( oSender, nItem )
METHOD WMLButtonDown()
ENDCLASS
//---------------------------------------------------------- ----------------
METHOD WMLButtonDown( nWParam, nLParam ) CLASS TExplorerBar
LOCAL nItem := ::HitTest( LoWord( nLParam ), HiWord( nLParam ) )
LOCAL lOk
IF nItem != 0
IF ( lOk := ::OnItemExpand( nItem ) ) == Nil .OR. lOk
::aItems[ nItem ]:lExpanded := !::aItems[ nItem ]:lExpanded
ENDIF
ENDIF
RETURN Nil
//---------------------------------------------------------- --------------------
Y después, en el formulario donde tengas la explorerbar, tendrás que asignar
a mano el evento (hasta que actualicemos el IDE). Lo puedes hacer en el
evento OnInitialize del formulario:
METHOD FormInitialize( oSender ) CLASS TForm1
::oExplorerBar1:OnItemExpand := "ExplorerBar1ItemExpand"
RETURN Nil
Para hacer lo que quieres, el código del evento quedaría más o menos así:
METHOD ExplorerBar1ItemExpand( oSender, nItem ) CLASS TForm1
IF !oSender:aItems[ nItem ]:lExpanded
AEval( oSender:aItems, {| oItem | oItem:lExpanded := .F. } )
ENDIF
RETURN Nil
--
Un saludo,
José F. Giménez

TExplorerBar

Publicado: Vie Feb 10, 2006 1:42 pm
por Yamil Bracho
Muchisimas gracias....!
"Jose F. Gimenez" <jfgimenez@wanadoo.es> wrote in message
news:[email=43ec63bc@ozsrvnegro.ozlan.local...]43ec63bc@ozsrvnegro.ozlan.local...[/email]
> Yamil,
>
> > Me gustaria que al seleccionar un TExplorerGroup diferente al que tengo
> > abierto, esete se cierre y abra el otro, es decir que solo haya uno
> > expandido a la vez
> > Es posible ?
>
> Haría falta un evento OnItemExpand para controlarlo, que no existe
> actualmente. Bueno, ya sí, porque lo acabo de poner ;-)
>
> Añade lo siguiente a algún prg de tu proyecto:
>
>
//---------------------------------------------------------- ----------------
>
> CLASS TExplorerBar FROM XExplorerBar
>
> EVENT OnItemExpand( oSender, nItem )
> METHOD WMLButtonDown()
>
> ENDCLASS
>
>
//---------------------------------------------------------- ----------------
>
> METHOD WMLButtonDown( nWParam, nLParam ) CLASS TExplorerBar
>
> LOCAL nItem := ::HitTest( LoWord( nLParam ), HiWord( nLParam ) )
> LOCAL lOk
>
> IF nItem != 0
> IF ( lOk := ::OnItemExpand( nItem ) ) == Nil .OR. lOk
> ::aItems[ nItem ]:lExpanded := !::aItems[ nItem ]:lExpanded
> ENDIF
> ENDIF
>
> RETURN Nil
>
>
//---------------------------------------------------------- ----------------
----
>
> Y después, en el formulario donde tengas la explorerbar, tendrás que
asignar
> a mano el evento (hasta que actualicemos el IDE). Lo puedes hacer en el
> evento OnInitialize del formulario:
>
> METHOD FormInitialize( oSender ) CLASS TForm1
>
> ::oExplorerBar1:OnItemExpand := "ExplorerBar1ItemExpand"
>
> RETURN Nil
>
>
> Para hacer lo que quieres, el código del evento quedaría más o menos así:
>
> METHOD ExplorerBar1ItemExpand( oSender, nItem ) CLASS TForm1
>
> IF !oSender:aItems[ nItem ]:lExpanded
> AEval( oSender:aItems, {| oItem | oItem:lExpanded := .F. } )
> ENDIF
>
> RETURN Nil
>
>
> --
> Un saludo,
>
> José F. Giménez
>
>