Problem gelöst!
Die Menügruppe muss kompiliert, entladen und dann neu geladen werden.
Die Menü´s müssen über ihren POPx Namen angesprochen werden.
Anbei ein Beispiel, das eine Toolbar mit zwei Buttons erzeugt.
Bei Klick darauf erscheint jeweils ein Kontextmenü (Zeichnen oder Aendern)
Sub Toolbartest()
Dim objMenuGroup As AcadMenuGroup
Dim objMenus As AcadPopupMenus
Dim objMenu As AcadPopupMenu
Dim objMenuItem As AcadPopupMenuItem
Dim objSubMenu As AcadPopupMenu
Dim objSubMenuItem As AcadPopupMenuItem
'Wenn Menügruppe geladen ist => entladen
For Each objMenuGroup In ThisDrawing.Application.MenuGroups
If objMenuGroup.Name = "TGA2006" Then
ThisDrawing.Application.MenuGroups.Item("TGA2006").Unload
End If
Next
'Leere Datei erzeugen (Mit Hilfe der Multifunktions DLL 'http://woeh.tripod.com/id4.html')
UtilFile.Create_File TGA2006Path & "TGA2006.mns", True
'Leere Menüdatei laden
Set objMenuGroup = ThisDrawing.Application.MenuGroups.Load("TGA2006.mns")
Set objMenus = objMenuGroup.Menus
'Pulldownmenü erzeugen (POP2)
Set objMenu = objMenus.Add("Zeichnen")
'objMenu.InsertInMenuBar ThisDrawing.Application.MenuBar.Count
objMenu.AddMenuItem objMenu.Count, "Linie", Chr(3) & Chr(3) & "_Line" & vbCr
objMenu.AddMenuItem objMenu.Count, "Kreis", Chr(3) & Chr(3) & "_Circle" & vbCr
'Pulldownmenü erzeugen (POP3)
Set objMenu = objMenus.Add("Aendern")
'objMenu.InsertInMenuBar ThisDrawing.Application.MenuBar.Count
objMenu.AddMenuItem objMenu.Count, "Schieben", Chr(3) & Chr(3) & "_Move" & vbCr
objMenu.AddMenuItem objMenu.Count, "Kopieren", Chr(3) & Chr(3) & "_Copy" & vbCr
'Toolbar erzeugen
Dim objToolbar As AcadToolbar
Dim objToolbarItem As AcadToolbarItem
Set objToolbar = objMenuGroup.Toolbars.Add("Test")
'Buttons hinzufügen
Set objToolbarItem = objToolbar.AddToolbarButton(objToolbar.Count, "test1", "test1", Chr(3) & Chr(3) & "$P0=TGA2006.POP2 $P0=* ")
Set objToolbarItem = objToolbar.AddToolbarButton(objToolbar.Count, "test2", "test2", Chr(3) & Chr(3) & "$P0=TGA2006.POP3 $P0=* ")
'Menü speichern und kompilieren
objMenuGroup.Save acMenuFileSource
objMenuGroup.Save acMenuFileCompiled
'Objektbezüge löschen sonst Systemabsturz beim Entladen
Set objMenuGroup = Nothing
Set objMenus = Nothing
Set objMenu = Nothing
Set objMenuItem = Nothing
Set objToolbar = Nothing
Set objToolbarItem = Nothing
'Menügruppe entladen
ThisDrawing.Application.MenuGroups.Item("TGA2006").Unload
'Menügruppe neu laden
ThisDrawing.Application.MenuGroups.Load "TGA2006.mnc"
End Sub
================================================================================================
Folgender Menücode wird dann in der MNS Datei generiert:
//
// AutoCAD Menüdatei - N:\Tga2006_develop\TGA2006.mns
//
***MENUGROUP=TGA2006
***POP2
ID_mnuZeichnen [Zeichnen]
ID_Linie [Linie]^C^C_Line^M
ID_Kreis [Kreis]^C^C_Circle^M
***POP3
ID_mnuAendern [Aendern]
ID_Schieben [Schieben]^C^C_Move^M
ID_Kopieren [Kopieren]^C^C_Copy^M
***TOOLBARS
**TEST
ID_Test_0 [_Toolbar("Test", _Floating, _Show, 392, 278, 1)]
ID_test1_0 [_Button("test1", "IDB_TBAR_SMILEY", "IDB_TBAR_SMILEY")]^C^C$P0=TGA2006.POP2 $P0=*
ID_test2_0 [_Button("test2", "IDB_TBAR_SMILEY", "IDB_TBAR_SMILEY")]^C^C$P0=TGA2006.POP3 $P0=*
***HELPSTRINGS
ID_TEST1_0 [test1]
ID_TEST2_0 [test2]
//
// Ende von AutoCAD Menüdatei - N:\Tga2006_develop\TGA2006.mns
//
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP