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
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]