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