Erweitern eines Formularbereichs mithilfe eines Add-Ins

Obwohl Sie Formulare mit Formularbereichen ohne COM-Add-In erstellen und ausführen können, können Formularbereiche mithilfe eines COM-Add-Ins benutzerdefinierte Geschäftslogik oder erweiterte Funktionen einschließen. Im Gegensatz zum Anpassen von Formularseiten in einem Standardformular verwenden Sie VBScript nicht zum Schreiben von Code hinter einem Formular. Stattdessen programmieren Sie Formularbereiche mit einem COM-Add-In. Ihr Add-In implementiert eine neue Schnittstelle, FormRegionStartup. Add-Ins können Microsoft Forms 2.0-Steuerelemente und Microsoft Outlook-Steuerelemente in einem Formularbereich verwenden. In diesem Thema wird beschrieben, wie Sie FormRegionStartup implementieren und auf Outlook-Steuerelemente in einem Formularbereich zugreifen.

Angeben der Verwendung eines Add-Ins

Wenn Sie den Formularbereich für eine Nachrichtenklasse registrieren, erstellen Sie in der Windows-Registrierung einen Schlüssel für diese Nachrichtenklasse (falls der Schlüssel noch nicht vorhanden ist), und geben Sie als Daten ein Gleichheitszeichen (=) gefolgt von der ProgID des Add-Ins an. For more information on registering a form region in the Windows registry, see Specifying Form Regions in the Windows Registry.

Implementieren von FormRegionStartup

Implementieren Sie in derselben Klasse, die die IDTExtensibility2-Schnittstelle Ihres COM-Add-Ins implementiert, die Outlook.FormRegionStartup-Schnittstelle , die in der Outlook-Typbibliothek definiert ist. Outlook ruft die vier Methoden in dieser Schnittselle auf:

GetFormRegionStorage

Kurz bevor Outlook einen Formularbereich anzeigt, der von einem Add-In gesteuert wird, ruft Outlook die GetFormRegionStorage-Methode auf. Wenn das Add-In einen Aufruf von Outlook an GetFormRegionStorage mit Informationen zu einem Formularbereich erhält, gibt das Add-In Layoutinformationen zurück. Diese Informationen können ein lokaler Pfad zur Layoutdatei (. OFS-Datei), ein Microsoft Windows IStorage-Objekt oder ein Bytearray mit dem Inhalt der OFS-Datei, mit dem ein Add-In die OFS als Ressource speichern kann. Outlook verwendet die zurückgegebenen Informationen, um Steuerelemente zu instanziieren und das Layout für den Formularbereich zu berechnen. Outlook instanziiert auch ein FormRegion -Objekt für den Formularbereich. Der Prototyp für die GetFormRegionStorage -Methode in Microsoft Visual Basic und Microsoft C# ist im Folgenden dargestellt.

In Visual Basic:

Public Function GetFormRegionStorage(ByVal FormRegionName As String,
    ByVal Item As Object, 
    ByVal LCID As Integer, 
    _ ByVal FormRegionMode As Outlook.OlFormRegionMode, 
    ByVal FormRegionSize As Outlook.OlFormRegionSize) _ 
Implements Microsoft.Office.Interop.Outlook.FormRegionStartup.GetFormRegionStorage

In C#:

public object GetFormRegionStorage(string FormRegionName, 
    object Item, 
    int LCID,
    Outlook.OlFormRegionMode FormRegionMode, 
    Outlook.OlFormRegionSize FormRegionSize) 

BeforeFormRegionShow

Wenn GetFormRegionStorage erfolgreich ist, ruft Outlook, kurz bevor der Formularbereich in einem Inspektorfenster oder im Lesebereich angezeigt wird, BeforeFormRegionShow auf, um das FormRegion-Objekt an das Add-In zu übergeben. Das Add-In nutzt diese Chance, bevor der Formularbereich angezeigt wird, um etwas in der Benutzeroberfläche zu aktualisieren, z. B. das Ändern von Bezeichnungsbeschriftungen, wie im Abschnitt Zugreifen auf Outlook-Steuerelemente unten beschrieben, und das Unterdrücken irrelevanter Inhalte. Die Prototypen für die BeforeFormRegionShow -Methode in in Visual Basic und C# sind im Folgenden dargestellt.

In Visual Basic:

Public Sub BeforeFormRegionShow(ByVal Item As Object, 
    ByVal FormRegion As Microsoft.Office.Interop.Outlook.FormRegion) _ 
Implements Microsoft.Office.Interop.Outlook.FormRegionStartup.BeforeFormRegionShow

In C#:

public void BeforeFormRegionShow(object Item, Outlook.FormRegion FormRegion) 

Zugreifen auf Outlook-Steuerelemente

Wenn Sie ein COM-Add-In zum Erweitern eines Formularbereichs verwenden, lauschen Sie häufig auf Steuerelementereignisse, rufen Steuerelementmethoden auf oder lesen und festlegen Steuerelementeigenschaften. Um auf Microsoft Forms 2.0-Steuerelemente, Outlook-Steuerelemente oder das Formularbereichobjekt in einem Add-In zugreifen zu können, müssen Sie einen Verweis auf die Microsoft Forms 2.0-Objektbibliothek hinzufügen. Wenn Sie diesen Verweis hinzufügen, erhalten Sie Zugriff auf den Microsoft.Vbe.Interop.Forms-Namespace in Ihrem Add-In-Projekt.

Nachdem Sie den Verweis hinzugefügt haben, können Sie bei Bedarf einen Alias für den Namespace der Typbibliothek erstellen, um die Verwendung der enthaltenen Typen zu vereinfachen. Zum Erstellen eines Alias fügen Sie am Anfang der Codedatei den folgenden Code ein. Die nachfolgenden Beispiele zeigen die entsprechende Vorgehensweise, wenn Sie das Add-In in Visual Basic oder C# verfassen. Diese Aliasse werden auch in den Codebeispielen weiter unten verwendet.

In Visual Basic:

Imports Outlook = Microsoft.Office.Interop.Outlook 
Imports Office = Microsoft.Office.Core  
Imports MSForms = Microsoft.Vbe.Interop.Forms 

In C#:

using Outlook = Microsoft.Office.Interop.Outlook; 
using Office = Microsoft.Office.Core; 
using MSForms = Microsoft.Vbe.Interop.Forms; 

Sie können über das FormRegion-Objekt , das von BeforeFormRegionShow abgerufen wurde, auf Steuerelemente zugreifen. Die FormRegion.Form-Eigenschaft gibt ein Objekt zurück, das ein Formular darstellt. Sie können dieses Objekt in die MSForms.UserForm-Klasse umwandeln (verfügbar in der Microsoft Forms 2.0-Objektbibliothek), um auf den Formularbereich für den Formularbereich zuzugreifen.

Jede Instanz des UserForm-Objekts verfügt über eine Controls-Auflistung, mit der Sie auf die einzelnen Steuerelemente von UserForm nach Namen zugreifen können. Für viele der Steuerelemente in Microsoft Forms 2.0 sind entsprechende Designelemente als Outlook-Steuerelemente verfügbar. In einem Formularbereich ersetzt Outlook diese Forms 2.0-Steuerelemente, die entsprechende Steuerelemente in Outlook besitzen, durch diese Designelemente. Wenn Sie einen Verweis auf ein Designsteuerelement aus der Controls -Auflistung abgerufen haben, können Sie es in den korrekten Typ in der Outlook-Typbibliothek umwandeln. Sie können dann auf alle Eigenschaften, Methoden und Ereignisse zugreifen, die für diese Steuerelemente in der Outlook-Typbibliothek verfügbar gemacht werden. Im Gegensatz zum Anpassen von Formularen mit VBScript können Sie alle Steuerelementereignisse und nicht nur das Click-Ereignis überwachen. Weitere Informationen zu Steuerelementen finden Sie unter Steuerelemente in einem benutzerdefinierten Formular.

Die folgenden Codebeispiele zeigen, wie die BeforeFormRegionShow-Methode den EingabeparameterFormRegion aus Outlook verwendet, um ein Formularobjekt abzurufen. Anschließend wandelt es in eine MSForms.UserForm-Klasse um und greift auf die Auflistung von Steuerelementen im UserForm-Objekt zu. Der durch dieses UserForm-Objekt dargestellte Formularbereich verfügt über zwei Outlook-Steuerelemente: ein Textfeld mit dem Namen OlkTextBox1 und ein Kontrollkästchen mit dem Namen OlkCheckBox1. It casts them to the proper Outlook control types and sets default values for these controls as follows.

In Visual Basic:

Dim UserForm As MSForms.UserForm 
Dim FormControls As MSForms.Controls 
Dim TextBox1 As Outlook.OlkTextBox 
Dim CheckBox1 As Outlook.OlkCheckBox 
 
UserForm = FormRegion.Form 
FormControls = UserForm.Controls 
 
TextBox1 = FormControls.Item("OlkTextBox1") 
TextBox1.Text = "Sample Form Region" 
CheckBox1 = FormControls.Item("OlkCheckBox1") 
CheckBox1.Value = True 

In C#:

MSForms.UserForm userForm = (MSForms.UserForm)FormRegion.Form; 
MSForms.Controls formControls = userForm.Controls; 
 
Outlook.OlkTextBox textBox1 =  
   (Outlook.OlkTextBox)formControls.Item("OlkTextBox1"); 
textBox1.Text = "Sample Form Region"; 
 
Outlook.OlkCheckBox checkBox1 =  
   (Outlook.OlkCheckBox)formControls.Item("OlkCheckBox1"); 
checkBox1.Value = true; 

GetFormRegionManifest

Beim Start von Outlook liest die Liste der von Formularbereichen in der Windows-Registrierung und speichert die Daten. Wenn Outlook auf der Grundlage dieser Daten feststellt, dass ein Add-In das XML-Manifest für einen Formularbereich bereitstellen soll, verwendet Outlook die in den zwischengespeicherten Daten angegebene ProgID und ruft die getFormRegionManifest-Methode auf, die von diesem Add-In implementiert wird, um den XML-Code abzurufen, der zum Anzeigen des Formularbereichs erforderlich ist. Wenn das XML-Manifest nicht gültig ist und nicht das XML-Schema des Formularbereichs einhält, kann der Formularbereich nicht von Outlook geladen werden.

Weitere Informationen zum Angeben einer ProgID beim Registrieren eines Formularbereichs finden Sie unter Angeben von Formularbereichen in der Windows-Registrierung.

Die Prototypen für die GetFormRegionManifest-Methode in in Visual Basic und C# sind im Folgenden dargestellt.

In Visual Basic:

Public Function GetFormRegionManifest(ByVal FormRegionName As String, 
    ByVal LCID As Integer) _
Implements Microsoft.Office.Interop.Outlook.FormRegionStartup.GetFormRegionManifest

In C#:

public object GetFormRegionManifest(string FormRegionName, int LCID)

GetFormRegionIcon

Wenn Outlook startet, wird die Liste der Formularbereiche in der Windows-Registrierung gelesen und die den Formularbereichen zugeordneten Daten zwischengespeichert. Wenn ein Formularbereich mit einer ProgID registriert wurde, greift Outlook auf das entsprechende Add-In zurück, indem die Implementierung von GetFormRegionIcon für jedes Symbol im XML-Manifest aufgerufen wird, das den Wert eines untergeordneten Elements des Symbols-Elements aufweistaddin. Weitere Informationen zum Verwenden eines Add-Ins für die Angabe von Symbolen finden Sie unter Vorgehensweise: Verwenden eines Add-Ins zum Angeben von Symbolen für einen Formularbereich.

Die Prototypen für die GetFormRegionIcon-Methode in in Visual Basic und C# sind im Folgenden dargestellt.

In Visual Basic:

Public Function GetFormRegionIcon(ByVal FormRegionName As String, 
    ByVal LCID As Integer, _ 
    ByVal Icon As Outlook.OlFormRegionIcon) _ 
Implements Microsoft.Office.Interop.Outlook.FormRegionStartup.GetFormRegionManifest 

In C#:

public object GetFormRegionIcon(string FormRegionName, int LCID, Outlook.OlFormRegionIcon Icon)

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.