Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Buttons aus PanelBar löschen

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
Autor Thema:   Buttons aus PanelBar löschen (696 mal gelesen)
TimC
Mitglied



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

Beiträge: 21
Registriert: 26.02.2008

erstellt am: 03. Apr. 2008 11:44    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

Hallo zusammen,

folgendes Problem habe ich:

Ich erstelle Buttons in dem "AMxAssemblyPanelCmdBar" Panel (Menüleiste für Baugruppen).

In "Activate" Sub erstelle ich dazu alle Buttons und füge Sie in das gewünschte Panel ein. Soweit funktioniert das auch einwandfrei!

Um die Schaltfläche wieder zu entfernen nutze ich die "Deactivate" Sub meines AddIns.

Dabei tritt folgendes Problem auf:

Entlade ich das AddIn über Extras -> Zusatzmodule... manuell funkioniert das einwandfrei.

Schließe ich den Inventor direkt werden beim nächsten Neustart des Inventors alle "meine" Befehl mit "Befehl nicht geladen" angezeigt.

Hat jemand vielleicht einen Tipp dazu?

Gruß, Tim


Deactivate-Code

Code:

            Try
                ' Buttons auf Baugruppen-Panel entfernen
                With oApp.UserInterfaceManager.CommandBars("AMxAssemblyPanelCmdBar")
                    .Controls("ibOpenDrawing").Delete()
                    .Controls("ibCreateNewSheetMetal").Delete()
                    .Controls("ibInsertLibraryPart").Delete()
                    .Controls("ibChangeComponent").Delete()
                    .Controls("ibCreatePartList").Delete()
                    .Controls("ibExportDesignData").Delete()
                    .Controls("ibCreateDWFFile").Delete()
                End With

                ' Entferne Buttondefinition
                ibInsertLibraryPart.Delete()
                ibOpenDrawing.Delete()
                ibCreateNewSheetMetal.Delete()
                ibChangeComponent.Delete()
                ibExportDesignData.Delete()
                ibCreatePartList.Delete()
                ibCreateDWFFile.Delete()

                ' Auf Nothing setzen?
                ibInsertLibraryPart = Nothing
                ibOpenDrawing = Nothing
                ibCreateNewSheetMetal = Nothing
                ibChangeComponent = Nothing
                ibExportDesignData = Nothing
                ibCreatePartList = Nothing
                ibCreateDWFFile = Nothing

            Catch ex As Exception
                MessageBox.Show(ex.Message & vbCrLf & ex.StackTrace, ex.Source, MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try


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

Manfred Zirk
Mitglied



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

Beiträge: 509
Registriert: 01.11.2002

IV2012 WIN 7 x64 SP1

erstellt am: 06. Apr. 2008 02:58    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 TimC 10 Unities + Antwort hilfreich

Hallo Tim,

vermutlich ist da irgendwas nicht sauber implementiert, was das Hinzufügen der Buttondefinitions betrifft.
Entladen des Addins und Beenden von Inventor sind nicht das Gleiche.

Die Buttondefinition besteht aus zwei Teilen:
-dem eigentlichen Befehl, der im Commandmanager steht
-und seiner graphischen Umsetzung für das UI des Inventor in den Commandbars des Userinterfacemanagers

Die Buttondefinition und die Commandcategory werden bei jedem Start des Addins durch dein Addin neu erzeugt.
-Buttondefinition erzeugen
-Commandcategory erzeugen
-Buttondefinition der Commandcategory hinzufügen
damit steht dein Befehl im Commandmanager zur Verfügung

Einmalig beim ersten Laden des Addins wird dein Befehl mit den Commandbars verknüpft und wird sichtbar.
-aus dem Userinterfacemanager die Commandbar auswählen
-aus der Commandbar die Controldefinitions auswählen
-den Controldefinitions deine Buttondefintion hinzufügen
damit ist auch der Button sichtbar

Beim Entladen des Addins passiert dann:
-aus dem Commandmanager deine Buttondefinition löschen
damit ist dein Befehl im Commandmanager gelöscht
-aus dem Userinterfacemanager die Commandbar auswählen
-aus der Commandbar die Controldefinitions auswählen
-deine Buttondefintion löschen
damit ist der Button unsichtbar


Wenn Befehlsleichen (graue Buttons, Befehl nicht geladen)auftauchen, kann sich die Definition der Buttons
beim Hinzufügen von der Defintion der Buttons beim Entfernen unterscheiden.
Es kann auch an einer nicht richtig aufgeräumten Commandbar liegen.
Inventor hat dann zwar die Buttondefinition aus dem Commandmanager entfernt, aber konnte die Commandbar nicht aufräumen.


Abhilfe wären:
Vor dem Verknüpfen deiner Befehle aus dem Commandmanager mit der Commandbar die Commandbar waschen,
das heißt eventuell noch vorhandenene eigene Buttondefinitions löschen, dann die Buttondefinition neu zur Commandbar hinzufügen.

Beim Entladen des Addins die Buttondefinitions deiner Befehle
komplett aus dem Commandmanager entfernen, dann
die Buttondefinitions aus der Commandbar entfernen.

Also könnte die Deakivierung so aussehen:

---

'Buttons und Button-Definitionen entfernen

oCommandMgr = oInventor.CommandManager
oControlDefs = oCommandMgr.ControlDefinitions
oUserInterfaceManager = oInventor.UserInterfaceManager

For Each oControlDef In oControlDefs
     If oControlDef.InternalName = _OpenMainFormPropMgrCmdButtonInternalName Then
        oControlDef.Delete()
        Exit For
     End If
Next oControlDef

For Each oCommandbar In oUserInterfaceManager.CommandBars
     If oCommandbar.InternalName = _CommandbarName Then
         For Each oCommandbarControl In oCommandbar.Controls
              If oCommandbarControl.InternalName = _OpenMainFormPropMgrCmdButtonInternalName Then
                  oCommandbarControl.Delete()
              End If
         Next oCommandbarControl
     End If
Next oCommandbar
---

Grüße

Manfred

[Diese Nachricht wurde von Manfred Zirk am 06. Apr. 2008 editiert.]

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

TimC
Mitglied



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

Beiträge: 21
Registriert: 26.02.2008

erstellt am: 07. Apr. 2008 13:58    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

Hallo Manfred,

ersteinmal Danke! Habe deinen Beispiel-Code ausprobiert. Leider ohne erfolg!

Habe jetzt zusätzlich das Application-Event "OnQuit" eingebunden.
In dem "OnQuit"-Event lösche ich nochmals die Button-Definitionen. Und es funktioniert!!!

Bin zwar nicht zu 100% zufrieden mit dieser Lösung doch wenigstens geht es so.

Gruß, Tim

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)2020 CAD.de | Impressum | Datenschutz