Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  AutoCAD VBA
  Toolbar mit Popupmenü

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Toolbar mit Popupmenü (1659 mal gelesen)
CADoktor
Mitglied
Techniker


Sehen Sie sich das Profil von CADoktor an!   Senden Sie eine Private Message an CADoktor  Schreiben Sie einen Gästebucheintrag für CADoktor

Beiträge: 35
Registriert: 29.03.2006

erstellt am: 03. Dez. 2007 15:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ich möchte gerne eine Toolbar erstellen mit Buttons, die wiederum ein popupmenü aufrufen ...

Wie ist so etwas realisierbar?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 03. Dez. 2007 16:18    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADoktor 10 Unities + Antwort hilfreich

guckst du hier

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADoktor
Mitglied
Techniker


Sehen Sie sich das Profil von CADoktor an!   Senden Sie eine Private Message an CADoktor  Schreiben Sie einen Gästebucheintrag für CADoktor

Beiträge: 35
Registriert: 29.03.2006

erstellt am: 03. Dez. 2007 16:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Anleitung ist mir a bisserl zu hoch ;-)
anbei nochmal der Versuch es etwas konkreter zu erklären...
Es soll eine neue Tollbar generiert werden, dann ein Button, bei dem nach Klick ein bestimmtes Menü als Popup angezeigt wird.
dieses bestimmte Menü (Pulldown bzw. Popup)soll ebenfalls per Code generiert werden.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Stelli1
Moderator
Verm.-Ing.


Sehen Sie sich das Profil von Stelli1 an!   Senden Sie eine Private Message an Stelli1  Schreiben Sie einen Gästebucheintrag für Stelli1

Beiträge: 1521
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 03. Dez. 2007 17:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für CADoktor 10 Unities + Antwort hilfreich

Hallo,

ich finde in dem Beispiel ist es doch ganz gut erklärt und ich hätte kein besseres Beispiel parat.
Vielleicht noch der Hinweis das man mit VBA keine Menügruppe anlegen kann.
Deshalb wird eine Menügruppe aus einer leeren Datei geladen. Die kann man ja per VBA erzeugen.

Aber das mit dem Popup/Pulldown Menü bekommst du doch auch "per Hand" nicht hin.
Meinst du ein Flyout ?

Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADoktor
Mitglied
Techniker


Sehen Sie sich das Profil von CADoktor an!   Senden Sie eine Private Message an CADoktor  Schreiben Sie einen Gästebucheintrag für CADoktor

Beiträge: 35
Registriert: 29.03.2006

erstellt am: 03. Dez. 2007 19:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Anbei mal Beispiel ...
Button 1 und 2 funktionieren ...
Button 3 mit eigenem Menü nicht ...

Sub Toolbartest()
    Dim objMenus As AcadPopupMenus
   
    Dim objMenu As AcadPopupMenu
    Dim objMenuItem As AcadPopupMenuItem

    Dim objSubMenu As AcadPopupMenu
    Dim objSubMenuItem As AcadPopupMenuItem
 
    On Error Resume Next
   
    Set objMenus = ThisDrawing.Application.MenuGroups.Item("acad").Menus
    Set objMenu = objMenus("TGA2006")
   
    If Not objMenu Is Nothing Then
        For Each objMenuItem In objMenu
            objMenuItem.Delete
        Next
        objMenu.RemoveFromMenuBar
    End If
   
    Set objMenu = objMenus.Add("TGA2006")
    objMenu.InsertInMenuBar ThisDrawing.Application.MenuBar.Count
    objMenu.AddMenuItem 0, "TGA2006 starten", "vbaausdr TGA2006Start" & vbCr
    objMenu.AddMenuItem objMenu.Count, "TGA2006 beenden", "vbaausdr call TGA2006Beenden" & vbCr
   
   
    Dim objToolbar As AcadToolbar
    Dim objToolbarItem As AcadToolbarItem

    For Each objToolbar In Application.MenuGroups("acad").Toolbars
        If objToolbar.Name = "TGA2006_Test" Then
            objToolbar.Delete
        End If
    Next

  Set objToolbar = Application.MenuGroups("acad").Toolbars.Add("TGA2006_Test")

  Set objToolbarItem = objToolbar.AddToolbarButton(1, "test1", "test1", Chr(3) & Chr(3) & "$p0=acad.modify $P0=*")
    With objToolbarItem
        .SetBitmaps TGA2006Path & "icons\Rohr.ico", TGA2006Path & "icons\Rohr.ico"
    End With

  Set objToolbarItem = objToolbar.AddToolbarButton(2, "test2", "test2", Chr(3) & Chr(3) & "$p0=acad.draw $P0=*")
    With objToolbarItem
        .SetBitmaps TGA2006Path & "icons\Rohr.ico", TGA2006Path & "icons\Rohr.ico"
    End With
   
  Set objToolbarItem = objToolbar.AddToolbarButton(3, "test3", "test3", Chr(3) & Chr(3) & "$p0=acad.TGA2006 $P0=*")
    With objToolbarItem
        .SetBitmaps TGA2006Path & "icons\Rohr.ico", TGA2006Path & "icons\Rohr.ico"
    End With
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADoktor
Mitglied
Techniker


Sehen Sie sich das Profil von CADoktor an!   Senden Sie eine Private Message an CADoktor  Schreiben Sie einen Gästebucheintrag für CADoktor

Beiträge: 35
Registriert: 29.03.2006

erstellt am: 04. Dez. 2007 10:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Annäherung an das Problem ...

Die Funktionalität, die ich gerne hätte ist im Prinzip der Austausch des Standartkontextmenüs mit $P0=Gruppe.Name $P0=*

Nach einiger Analyse bin ich nun draufgekommen, dass Pulldownmenüs, die über VBA erstellt werden mit folgenden Syntax beginnen:

***POP2
ID_mnuTest    [Test]

Um das Kontextmenü auszutauschen, müsste aber eine **Alias Marke definiert werden. Also wie folgt:

***POP2
**Test
ID_mnuTest    [Test]

Dann wäre das Menü über $P0=GRUPPE.TEST &P0=* aufrufbar

Dieser Alias ist über VBA aber nicht definierbar ...
irgendwelche Ideen?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADoktor
Mitglied
Techniker


Sehen Sie sich das Profil von CADoktor an!   Senden Sie eine Private Message an CADoktor  Schreiben Sie einen Gästebucheintrag für CADoktor

Beiträge: 35
Registriert: 29.03.2006

erstellt am: 04. Dez. 2007 11:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz