Discussion:
Crear barra de menús - Necesito ayuda
(demasiado antiguo para responder)
Fernando Martín Carvajal
2007-06-06 09:59:00 UTC
Permalink
Tengo que crear en tiempo de ejecución una barra de menús personalizada, pero
con un comando que tiene subcomandos a cuatro niveles. Por ejemplo: "Menú
principal", "Gestión de ventas", "Gestión de pedidos", "Mantenimiento de
pedidos". Con el primer nivel no tengo problemas:

Dim cbrPersonalizada As CommandBar
Dim cbrMenuPrincipal As CommandBarControl
Dim cbrModulo As CommandBarControl
Dim cbrGrupo As CommandBarControl

On Error GoTo TratarError
' Crea una variable con la barra de herramientas "Vista formulario x":
Set cbrPersonalizada = CommandBars("Vista formulario x")
' Crea una variable con el menú "menú principal"
Set cbrMenuPrincipal = cbrFedop.Controls("Menú principal")
' Y mediante el método Add le agrego los comandos que me interesan...
Set cbrModulo = cbrMenuPrincipal.Controls.Add(msoControlDropdown, , ,
, False)
'...

pero no sé cómo agregar los elementos del 2º, 3º y 4º nivel. Tampoco sé cómo
hacer invisibles los comandos de estos niveles que no me interesa que se vean.
¿Como puedo acceder a la propiedad visible de estos comandos?

Gracias de antemano.

Fernando Martín
Patxi Sanz
2007-06-07 16:56:49 UTC
Permalink
Hola Fernando:

Para agregar niveles, tienes que agregar controles de tipo Popup. Por
ejemplo:

'Necesita una referencia a Microsoft Office x.y Object Library
Function CrearBarra()
Dim menuBar As Office.CommandBar
Dim cmdBarControl As Office.CommandBarPopup
Dim menuCommand As Office.CommandBarButton
Dim controlCount As Integer

'Asignar la nueva barra de menús
Set menuBar = Application.CommandBars.Add("Vista formulario X")

'Agregar el nuevo menú
Set cmdBarControl = menuBar.Controls.Add( _
Type:=Office.MsoControlType.msoControlPopup)

cmdBarControl.Caption = "Menú principal"

'Agregar el primer nivel
Set cmdBarControl = cmdBarControl.Controls.Add( _
Type:=Office.MsoControlType.msoControlPopup)

With cmdBarControl
.Caption = "Gestión de ventas"
End With

'Agregar el segundo nivel
Set cmdBarControl = cmdBarControl.Controls.Add( _
Type:=Office.MsoControlType.msoControlPopup)

With cmdBarControl
.Caption = "Gestión de pedidos"
End With

'Agregar el comando
Set menuCommand = cmdBarControl.Controls.Add( _
Type:=Office.MsoControlType.msoControlButton)

With menuCommand
.Caption = "Mantenimiento de pedidos"
.FaceId = 65
End With

menuBar.Visible = True
End Function

Y para mostrar/ocultar niveles o comandos, puedes usar la propiedad Visible
del objeto que deseas ver/no ver.
--
Un saludo,


Patxi Sanz
patxisanz[ARROBA]yahoo[PUNTO]es
Tudela (NA)
Loading...