Frage

Ich versuche nur, um dies zu bestätigen: In Office 2003, ich möchte ein eigenes Untermenü erstellen - was in CommandBar parlance als Popup (msoControlPopup) bekannt ist - zur Laufzeit, und legen Sie ein Bild dafür. Mit einem CommandBarButton ist dies sehr einfach

Set btn1 = mnu.Controls.Add(msoControlButton, temporary:=True)
btn1.Caption = "Btn1"
btn1.Picture = stdole.LoadPicture("C:\temp\test.bmp")

Aber mit einem CommandBarPopup oder CommandBarControl vom Typ msoControlPopup, versagt es

Set sub1 = mnu.Controls.Add(msoControlPopup, temporary:=True)
sub1.Caption = "Sub1"
    'object doesn't support this property or method for next line
sub1.Picture = stdole.LoadPicture("C:\temp\test.bmp")

Der msoControlPopup Typ scheint keine .Style Eigenschaft entweder zu ermöglichen, das ist, wie Office, was bestimmt zu zeigen - Symbol, Text, sowohl - auf der Kontrolle. Ich habe gefunden, das noch nicht bewiesen, so hielte eine letzte Hoffnung, dass ich etwas falsch mache, und es ist in der Tat eine Möglichkeit, ein Symbol auf einem Untermenü zur Laufzeit eingefügt werden.

Vielen Dank für jedes Licht Sie vergießen können.

War es hilfreich?

Lösung

Ok gut mehr Tumbleweeds. Ich bin ziemlich sicher, dass die Antwort auf diese, so kann es nicht getan werden. Und hier ist mein „Beweis“: Keiner der Untermenüs in integrierten haben Symbole (die ich nicht bis wusste nach Ich stellte den oben, und wenn man den obigen Code ausführen, gehen Sie zu Extras> Anpassen in der Menüleiste, dann klicken Sie auf das Testmenü es fallen nach unten, und der rechten Maustaste auf Sub1, sollten Sie alle Tasten und Stil Optionen abgeblendet. Rechtsklick auf btn1, und sie sind zur Verfügung sehen.

Jede andere Gedanken immer noch willkommen.

Andere Tipps

Natürlich, wenn Sie auf das Bild oder FaceID des Untermenüs Überschrift festlegen müssen, die nicht eine verfügbare Methode für Untermenü Schriften ist, aber wenn Sie das Bild oder FaceID im Untermenü einstellen wollen selbst modifiziert I-Code von hier dies zu tun:

 Public Sub newSubMenu()
 Dim menuBar As CommandBar
 Dim newMenu As CommandBarControl
 Dim menuItem As CommandBarControl
 Dim subMenuItem As CommandBarControl
 CommandBars("Sub Menu Bar").Delete
 Set menuBar = CommandBars.Add(menuBar:=False, Position:=msoBarPopup, Name:="Sub Menu Bar", Temporary:=True)


   Set newMenu = menuBar.Controls.Add(Type:=msoControlPopup)
   newMenu.Caption = "&First Menu"

   Set newMenu = menuBar.Controls.Add(Type:=msoControlPopup)
   newMenu.Caption = "&Second Menu"

   Set newMenu = menuBar.Controls.Add(Type:=msoControlPopup)
   newMenu.Caption = "&Third Menu"

   Set menuItem = newMenu.Controls.Add(Type:=msoControlButton)

   With menuItem
      .Caption = "F&irst Sub"
      .FaceId = "356"
      .OnAction = "myTest"
   End With

   Set menuItem = newMenu.Controls.Add(Type:=msoControlButton)

   With menuItem
      .Caption = "S&econd Sub"
      .FaceId = "333"
      .OnAction = "otherTest"
   End With

   Set menuItem = newMenu.Controls.Add(Type:=msoControlPopup)
   menuItem.Caption = "Sub Menus"

   Set subMenuItem = menuItem.Controls.Add(Type:=msoControlButton)

   With subMenuItem
      .Caption = "Item 1"
      .FaceId = 321
      .OnAction = "firstMacro"
   End With

   Set subMenuItem = menuItem.Controls.Add(Type:=msoControlButton)

   With subMenuItem
      .Caption = "Item 2"
      '.FaceId = 432
      .Picture = stdole.StdFunctions.LoadPicture("C:\temp\test.bmp")
      .OnAction = "secondMacro"
   End With
   CommandBars("Sub Menu Bar").ShowPopup
End Sub

Getestet habe ich diese und es scheint zu funktionieren für beide FaceID des geladen und Bilder.

Natürlich die „auf der Laufzeit“ beeinflussen zu bekommen, würde ich setze diese in einer Funktion empfehlen, die jedes Mal, wenn der Benutzer auf einem bestimmten Steuerelement geklickt aufgerufen wurden.

Es könnte weiter Griff variable Bilder auch hier aufgewendet werden.

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top