Menus Visual Basic

Necesito (si lo sabes), que me cuentes cómo puedo hacer un menú dinámicamente por código, lógicamente con varios niveles. Si no es posible con el que viene con el Visual Basic 6.0, y lo es con algún control activex, indícamelo. Gracias.
Saludos.
Algoran
1

1 respuesta

Respuesta
No se si los quieres hacer con VB6 o VBA sobre Excel, por que esta sección es de VBA sobre Excel, pero para que veas te dijo en los dos...
******************
Primero: en VBA sobre Excel...
Public Sub PonerMenus()
Dim NuevoMenu As Object
Dim SubMenu As Object
Dim BarraMenusActiva As Object
'Busca el menu Presupuesto, si lo hay no hace nada
'se busca cada vez que se ejecuta la macro, por si el usuario lo elimino
Set NuevoMenu = CommandBars.FindControl(Type:=msoControlPopup, Tag:="Presupuesto")
If NuevoMenu Is Nothing Then
Set BarraMenusActiva = CommandBars.ActiveMenuBar
Set NuevoMenu = BarraMenusActiva.Controls.Add(Type:=msoControlPopup, Temporary:=True)
NuevoMenu.Caption = "&Presupuesto"
NuevoMenu.Tag = "Presupuesto"
Set SubMenu = NuevoMenu.Controls.Add(Type:=msoControlButton, Id:=1)
With SubMenu
.Caption = "&Iniciar Presupuesto" 'Le asigna nombre
.OnAction = "HacerPresupuesto" 'Le asigna la macro
End With
Set SubMenu = NuevoMenu.Controls.Add(Type:=msoControlButton, Id:=1)
With SubMenu
.Caption = "&Actualizar Precios" 'Le asigna nombre
.OnAction = "ActualizarPrecios" 'Le asigna la macro
End With
Set SubMenu = NuevoMenu.Controls.Add(Type:=msoControlButton, Id:=1)
With SubMenu
.Caption = "&Editar Catalogo Personal" 'Le asigna nombre
.OnAction = "EditarCatalogo" 'Le asigna la macro
End With
Set BarraMenusActiva = Nothing
Set NuevoMenu = Nothing
Set SubMenu = Nothing
End If
End Sub
******************************
Segundo: en VB6
Private Sub mnuOpcion_Click(Index As Integer)
Static Max As Integer
Select Case Index
Case 0
Max = Max + 1
Load mnuOpcion(Max)
mnuOpcion(Max).Caption = "Opcion " & Format(Max)
Case Else
Unload mnuOpcion(Index)
End Select
End Sub
Par el caso de VB6 estoy suponiendo que tienes un menú Principal y un primero submenú de esta forma
Archivo (principal)
Agregar menú (Submenú) mnuOpcion
El menú mnuOpcion tiene su propiedad Index en 0, para crear menús dinámicos, bueno, cualquier control en tiempo de ejecución, debe ser una matriz de controles...
Los menús dinámicos que te pedía eran en VB6, no eres el primero que me comenta de hacer una matriz de controles, pero a pesar de todo, no se me ocurre cómo, ya que es un menú que puede tener hasta cuatro niveles y según el nivel más de 20 opciones.
Si me pudieras aclarar un poco más las cosas...
Gracias.
Es casi lo mismo del ejemplo que te pongo, estoy suponiendo que sabes manejar el editor de menús, que sabes que son métodos, propiedades y eventos, puedes solicitar el ejemplo que prepare a [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas