Laden...

In Outlook einen Button auf einem eigenen Ribbon enablen/dissablen funktioniert nicht....

Erstellt von Howard vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.092 Views
Howard Themenstarter:in
84 Beiträge seit 2007
vor 12 Jahren
In Outlook einen Button auf einem eigenen Ribbon enablen/dissablen funktioniert nicht....

Hallo Leute,

ich hab mir ein AddIn für Outlook 2010 gebaut. Soweit alles super. Aber nun habe ich ein Ribbon eingebaut. Erst mit dem Designer und dann nach XML usw. funktioniert alles super hab auch Bilder drauf und der Klick reagiert auch. ABER:

Wenn ich versuche auf einen der Button zuzugreifen funktioniert das einfach nicht.
Ich benutze folgende Funktion um an den Button zu kommen:


ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];

ribbonCollection.HowardOutlookRibbon.btnStartImport.Enabled		= true;

ich habe auch schon die anderen beiden Arten des Zugriffs versucht:


ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveExplorer()];

bzw.

Globals.Ribbons.HowardOutlookRibbon.btnStartImport.Enabled		= true;

Das Problem ich bekomme immer eine "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." Exception da immer

HowardOutlookRibbon == null 

und auch

ribbonCollection.Count == 0

ist.

Gibts da irgendwie noch nen anderen Weg um an die Buttons zu kommen oder hab ich irgendwas überlesen was ich noch registrieren muss oder so damit ich an die Globals komme?

Vielen Dank

Howard

Howard Themenstarter:in
84 Beiträge seit 2007
vor 12 Jahren

Okay eine Möglichkeit habe ich gefunden:

Man kann in der XML Datei für das Ribbon für jeden Button bzw. auch für das ganze Ribbon getEnabled eintragen


<button id="btnImport" onAction="btnClick" label="Import starten" size="large" getImage="getImages" getEnabled="GetBtnEnabled" />

Zwar wird die Funktion

public bool GetBtnEnabled(IRibbonControl control){...}

zunächst nur beim erstmaligem Anzeigen ** des Ribbons aufgerufen ABER** wenn man auf Statusänderungen im Programm reagieren will kann man durch Aufruf von

ribbon.Invalidate(); //ribbon ist die Membervari vom Typ IRibbonUI

den erneuten Aufruf der Funktion "erzwingen".

Wenn keiner ne bessere Idee hat würd ich das erstmal so lassen...

Vielen Dank das Ihr mir zugehört habt beim laut denken 😁

Howard