Pues no era tan difícil de hacer un efecto parecido al menú de "cierta página" que no voy a nombrar.
Mi idea es de tener estos expander a la izquierda del formulario. Aquí solo se muestra como es
el ejemplo que quería lograr y como siempre por falta de tiempo... ..no hacía por encontrar
una solución.
Vamos con la idea. Tengo tres expander. El objetivo es que al expandir uno de ellos, el resto debe
contraerse. En el caso de que el expander ya se encuentre expandido se contraerá o viceversa y no afectará
al resto.
Lo cierto es que me compliqué al principio con la creación de grupo y con last.
Si de antemano sabemos que son tres expanders, el código podría ser este:
Public Sub Form_Open()
'Por defecto 1 expandido
'Expander1 no está oculto
Expand1.Hidden = False
End
Public Sub Expand2_Show()
'Ocultar 1 y 3
Expand1.Hidden = True
Expand3.Hidden = True
End
Public Sub Expand3_Show()
'Ocultar 1 y 2
Expand1.Hidden = True
Expand2.Hidden = True
End
Public Sub Expand1_Show()
'Ocultar 2 y 3
Expand2.Hidden = True
Expand3.Hidden = True
End
'Por defecto 1 expandido
'Expander1 no está oculto
Expand1.Hidden = False
End
Public Sub Expand2_Show()
'Ocultar 1 y 3
Expand1.Hidden = True
Expand3.Hidden = True
End
Public Sub Expand3_Show()
'Ocultar 1 y 2
Expand1.Hidden = True
Expand2.Hidden = True
End
Public Sub Expand1_Show()
'Ocultar 2 y 3
Expand2.Hidden = True
Expand3.Hidden = True
End
Pero y si queremos más expander dentro de un contenedor.
Pues esta vez con la creación de un grupo y con la propiedad tag.
La variable anteriorabierto es una variable de apoyo para saber cual fue
el último expander, expandido.
Private aexpanders As New Expander[]
Private anteriorabierto As Integer
Public Sub Form_Open()
AgruparExpanders()
'Por defecto vamos a expandir el expander con tag 0
anteriorabierto = 0
aexpanders[anteriorabierto].Hidden = False
End
Public Sub AgruparExpanders()
Dim unobjeto As Object
'Vamos a agrupar en el array de controles aexpander todos los controles expander que están contenidos en el Panel1(hijos)
For Each unobjeto In Panel2.Children
If unobjeto Is Expander Then
aexpanders.Add(unobjeto)
Endif
Next
End
Public Sub Expansores_Show()
'Siempre que el expander sea distinto al expander abierto anteriormente
If Last.tag <> anteriorabierto Then
aexpanders[anteriorabierto].Hidden = True
aexpanders[Last.tag].Hidden = False
anteriorabierto = Last.tag
Endif
End
Private anteriorabierto As Integer
Public Sub Form_Open()
AgruparExpanders()
'Por defecto vamos a expandir el expander con tag 0
anteriorabierto = 0
aexpanders[anteriorabierto].Hidden = False
End
Public Sub AgruparExpanders()
Dim unobjeto As Object
'Vamos a agrupar en el array de controles aexpander todos los controles expander que están contenidos en el Panel1(hijos)
For Each unobjeto In Panel2.Children
If unobjeto Is Expander Then
aexpanders.Add(unobjeto)
Endif
Next
End
Public Sub Expansores_Show()
'Siempre que el expander sea distinto al expander abierto anteriormente
If Last.tag <> anteriorabierto Then
aexpanders[anteriorabierto].Hidden = True
aexpanders[Last.tag].Hidden = False
anteriorabierto = Last.tag
Endif
End
Adjunto el ejemplo.
Saludos
MenuDesplegableLateral.tar.gz | ||
Descripción: | Ejemplo de menú creado con expanders. Solo un menú de un expander puede estar expandido | Descargar |
Nombre del archivo: | MenuDesplegableLateral.tar.gz | |
Tamaño: | 14.41 KB | |
Descargado: | 42 veces |
MenuDesplegableLateral.tar.gz | ||
Descripción: | Ejemplo de menú creado con expanders. Solo un menú de un expander puede estar expandido | Descargar |
Nombre del archivo: | MenuDesplegableLateral.tar.gz | |
Tamaño: | 14.41 KB | |
Descargado: | 42 veces |
MenuDesplegableLateral.tar.gz | ||
Descripción: | Ejemplo de menú creado con expanders. Solo un menú de un expander puede estar expandido | Descargar |
Nombre del archivo: | MenuDesplegableLateral.tar.gz | |
Tamaño: | 14.41 KB | |
Descargado: | 42 veces |