| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: eigene Buttons wieder aus Menü löschen (849 mal gelesen)
|
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 20. Jun. 2007 11:44 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Habe ein kleines Probelm! Habe meine Buttons auch im Baugruppen Menü Hinterlegt! Soweit so gut! Jedoch beim löschen da habe ich probleme! Wenn ich nur die Buttondefinition lösche bleibt dann da komische symbol (Wenn der Button nicht geladen werden kann) im Buagruppenmenü!
Code: ExplButton.Delete()
Und wenn ich in der Symbolleiste den button aufrufen möchte bekomme ich eine Fehlermeldung Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG)) Code: For i As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Count If oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "PartMenuBar" Then For x As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Count If oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Arbeitsverzeichnis" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Einstellungen" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Normteile" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() End If Next ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "AssemblyMenuBar" Then For x As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Count If oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Arbeitsverzeichnis" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Einstellungen" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Normteile" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() End If Next ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "DrawingMangerMenuBar" Then For x As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Count If oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Arbeitsverzeichnis" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Einstellungen" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).InternalName = "Normteile" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.Item(x).Delete() End If Next End If Next
Ich habe herausgefunden, dass die eingefügeten Buttons nur als Text in der Registry stehen! Wie lösche ich jetzt jedoch die Buttons Richtig! Vielen Dank!! mfg Bernhard
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 20. Jun. 2007 15:34 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Hallo Bernhard, ich kann mir vorstellen, dass du den Button schon gelöscht hast, jedoch ist Inventor nicht so clever um die Toolbar zu aktualisieren. Ob ich Recht habe oder nicht, findest du heraus, indem du deinen Code durch die If FirstTime laufen lässt. Das könntest du z.B. in DebugModus machen, oder eben bevor du den Inventor startest, lösche deine GUID aus z.B.: HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion12.0\UI Customization V5\Command Owner IDs Das bewirkt, dass die FirstTime auf false gesetzt wird, und die If, wo die Toolbar eigentlich gebildet wird, durchläuft. Wenn dann dein gelöschter Button nicht mehr in der Leiste ist, dann weißt du was los ist.
------------------ Grüße Igor FX64 Software Solutions Data Management Konferenz 2007 (26. - 27. Juni 2007) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 21. Jun. 2007 15:39 <-- editieren / zitieren --> Unities abgeben:
Hi Igor! Derzeit ist das unter FirstTime Code:
If FirstTime = True Then 'WriteKey(My.Settings.INI, "ALLG", "Normteile", "") SaveKey("SMC IV AddIn 3.0 ALLG", "NORMTEILE", "") SaveKey("SMC IV AddIn 3.0 ALLG", "ERRORLOGFILE", My.Settings.ERRORLOGFILE) For i As Integer = 1 To oApp.UserInterfaceManager.CommandBars.Count If oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "PartMenuBar" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(ExplButton) oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(SettingsButton) oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(NormteileButoon) ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "AssemblyMenuBar" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(ExplButton) oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(SettingsButton) oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(NormteileButoon) ElseIf oApp.UserInterfaceManager.CommandBars.Item(i).InternalName = "DrawingMangerMenuBar" Then oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(ExplButton) oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(SettingsButton) oApp.UserInterfaceManager.CommandBars.Item(i).Controls.AddButton(NormteileButoon) End If Next end if
Wenn ich IV zum ersten Mal starte ist alles OK (Firsttime = true) ab dann Würden immer Buttons hinzugefügt werden -> ohne dass Fisrt Start True ist? Desshalb durchlaufe ich eine Schleife zum Löschen der Buttons beim Deactivate event und verwende einfach einen Errorhandler, da ich meist diese Fehlermeldung bekomme: Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG)) Dann funktioniert es immer richtig!? Nur ich glaube nicht, dass das die beste Lösung ist! Vielen Dank!! mfg Bernhard [Diese Nachricht wurde von BernhardU am 21. Jun. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 21. Jun. 2007 16:45 <-- editieren / zitieren --> Unities abgeben: Nur für BernhardU
Zitat: Original erstellt von BernhardU: ...Nur ich glaube nicht, dass das die beste Lösung ist!...
Deine Vermutung ist wohl richtig Wenn die Buttons immer hinzugefügt werden, dann liegt es an der FirstTime die in dem Fall immer auf True ist. Die FirstTime ist auf True wenn dein AddIn in: HKEY_CURRENT_USER\Software\Autodesk\Inventor\RegistryVersion12.0\UI Customization V5\Command Owner IDs nicht aufgelistet ist, und die CLSID deines AddIns wird in dem Key nicht geschrieben solange dein AddIn nicht richtig registriert ist. Also ist da wohl die Ursache deines Problems. Und da dein Activate Teil ein reines Workaround ist, lohnt sich da nicht nach Fehlersuche zu gehen, denn es wäre wieder nur ein weiterer Workaround für dein Workaround und das hat irgendwann mal keinen Sinn mehr. Du musst schauen dass du dein AddIn richtig registrierst, so dass die FirstTime richtig arbeitet (nur beim ersten Mal durchläuft), und dann hast wahrscheinlich auch keine Probleme mehr mit den Buttons. Ich habe in dem ersten Post einfach mal Inventor beschuldigt, aber es ist möglich, dass es nur an deinem Code liegt.
------------------ Grüße Igor FX64 Software Solutions Data Management Konferenz 2007 (26. - 27. Juni 2007) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BernhardU Mitglied Techniker / Konstrukteur / Student
Beiträge: 328 Registriert: 17.08.2005 Windows XP SP3 AIP 2011 VS 2005
|
erstellt am: 22. Jun. 2007 09:02 <-- editieren / zitieren --> Unities abgeben:
Hi Igor die Registry Einträge sind alle Vorhanden! Jedoch FirstTime bleit immer auf 1! Anscheinend ein Fehler beim Installieren oder sonst wo!! Mal schauen! Ist nur komisch! Da ich jetzt beim kontrollieren der Registry Eintröge keinen Fehler gefunden!! Nadann mal schauen woran es liegt!! Vielen Dank MfG Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|