Partager via


Extension d'une zone de formulaire avec un complément

Alors que vous pouvez créer et exécuter des formulaires avec des zones de formulaire sans complément COM, l’utilisation d’un complément COM permet à des zones de formulaire d’inclure une logique d’entreprise personnalisée ou des fonctionnalités avancées. Contrairement à la personnalisation des pages de formulaire dans un formulaire standard, vous n’utilisez pas VBScript pour écrire du code derrière un formulaire ; au lieu de cela, vous programmez des zones de formulaire avec un complément COM. Votre complément implémente une nouvelle interface, FormRegionStartup. Les compléments pourront utiliser des contrôles Microsoft Forms 2.0 et des contrôles Microsoft Outlook dans une zone de formulaire. Cette rubrique explique comment implémenter FormRegionStartup et accéder à des contrôles Outlook dans une zone de formulaire.

Spécification d'utilisation d'un complément

Lorsque vous inscrivez la zone de formulaire pour une classe de message, créez une clé dans le Registre Windows pour cette classe de message (si la clé n’existe pas encore) et spécifiez comme données un signe égal (=) suivi du ProgID du complément. Pour plus d’informations sur l’inscription d’une zone de formulaire dans le Registre Windows, consultez Spécification de zones de formulaire dans le Registre Windows.

Implémentation de FormRegionStartup

Dans la même classe qui implémente l’interface IDTExtensibility2 de votre complément COM, implémentez l’interface Outlook.FormRegionStartup , qui est définie dans la bibliothèque de types Outlook. Celui-ci mettra en cache les quatre méthodes dans cette interface ;

GetFormRegionStorage

Quand Outlook est sur le point d’afficher une zone de formulaire contrôlée par un complément, Outlook appelle la méthode GetFormRegionStorage. Lorsque le complément reçoit un appel d’Outlook à GetFormRegionStorage spécifiant des informations pour une zone de formulaire, le complément retourne des informations pour la disposition. Ces informations peuvent être un chemin d’accès local au fichier de disposition (. FICHIER OFS), un objet Microsoft Windows IStorage ou un tableau d’octets avec le contenu du fichier OFS, ce qui permet à un complément de stocker l’OFS en tant que ressource. Outlook utilise les informations retournées pour instancier des contrôles et calculer la disposition de la zone de formulaire. Outlook instancie également un objet FormRegion pour la zone de formulaire. Le prototype de méthode pour pour GetFormRegionStorage dans Microsoft Visual Basic ou Microsoft C# est illustré ci-dessous.

Dans 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

Dans C# :

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

BeforeFormRegionShow

Juste avant que la zone de formulaire soit affichée dans une fenêtre Inspecteur ou le volet de lecture, si GetFormRegionStorage réussit, Outlook appelle BeforeFormRegionShow, en transférant au complément l’objet FormRegion. Le complément utilise cette chance avant que la zone de formulaire ne s’affiche pour mettre à jour tout ce qui se trouve dans l’interface utilisateur, comme la modification des légendes d’étiquette, comme décrit dans la section Accès aux contrôles Outlook ci-dessous, et la suppression du contenu non pertinent. Les prototypes des méthode pour Visual Basic et C# pour BeforeFormRegionShow sont présentés ci-dessous.

Dans Visual Basic :

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

Dans C# :

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

Accès aux contrôles Outlook

Lors de l’utilisation d’un complément COM pour étendre une zone de formulaire, vous écoutez souvent des événements de contrôle, appelez des méthodes de contrôle, lisez et définissez des propriétés de contrôle. Pour accéder aux contrôles Microsoft Forms 2.0, aux contrôles Outlook ou à l’objet de canevas de formulaire dans un complément, vous devez ajouter une référence à la bibliothèque d’objets Microsoft Forms 2.0. L’ajout de cette référence vous fournit un accès à l’espace de noms Microsoft.Vbe.Interop.Forms dans votre projet de complément.

Après l’ajout de la référence, vous pouvez éventuellement créer un alias à l’espace de noms de la bibliothèque de types, afin de faciliter l’utilisation des types inclus. Pour créer un alias, insérez le code suivant dans la partie supérieure du fichier de code. Ci-dessous figurent quelques exemples sur la réalisation de cette opération si vous écrivez votre complément en Visual Basic ou C#. Ces alias seront également utilisés dans les exemples de code ci-dessous.

Dans Visual Basic :

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

Dans C# :

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

Vous pouvez accéder aux contrôles via l’objet FormRegion obtenu à partir de BeforeFormRegionShow. La propriété FormRegion.Form renvoie un objet représentant un formulaire ; Vous pouvez convertir cet objet en classe MSForms.UserForm (exposée dans la bibliothèque d’objets Microsoft Forms 2.0) pour accéder au canevas de formulaire pour la zone de formulaire.

Chaque instance de l’objet UserForm possède une collection Controls qui peut servir à accéder aux contrôles individuels sur UserForm par nom de contrôle. De nombreux contrôles Microsoft Forms 2.0 possèdent des équivalents à thème qui sont des contrôles Outlook. Dans une zone de formulaire, Outlook remplace ces contrôles Forms 2.0 qui disposent de contrôles équivalents Outlook par les équivalents à thème correspondant. Une fois que vous avez obtenu une référence à un contrôle à thème à partir de la collection Controls , vous pouvez le convertir en type approprié dans la bibliothèque de types Outlook. Vous pourrez ensuite accéder à toutes les propriétés, méthodes et événements exposés pour ces contrôles dans la bibliothèque de types Outlook. Contrairement à la personnalisation des formulaires avec VBScript, vous serez en mesure d’écouter tous les événements de contrôle, et pas seulement l’événement Click . Pour plus d’informations sur les contrôles, voir Contrôles dans un formulaire personnalisé.

Les exemples de code suivants montrent comment la méthode BeforeFormRegionShow utilise le paramètre d’entréeFormRegion d’Outlook pour obtenir un objet de formulaire, puis le convertit en classe MSForms.UserForm et accède à la collection de contrôles dans l’objet UserForm . Le canevas de formulaire représenté par cet objet UserForm a deux contrôles Outlook : une zone de texte nommée OlkTextBox1 et une case à cocher nommée OlkCheckBox1. Elle les diffuse vers les types de contrôle Outlook appropriés et définit des valeurs par défaut pour ces contrôles comme suit.

Dans 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 

Dans 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

Au moment de démarrer, Outlook lit la liste des zones de formulaire dans le Registre Windows et met en cache les données. Sur la base de ces données, si Outlook remarque qu’un complément doit fournir le manifeste XML pour une zone de formulaire, Outlook utilise le ProgID fourni dans les données mises en cache et appelle la méthode GetFormRegionManifest implémentée par ce complément pour obtenir le code XML dont il a besoin pour afficher la zone de formulaire. Si le manifeste XML n’est ni valide ni conforme au schéma XML de zone de formulaire, Outlook ne sera pas en mesure de charger la zone de formulaire.

Pour plus d’informations sur la spécification d’un ProgID lors de l’inscription d’une zone de formulaire, voir Spécification de zones de formulaire dans le Registre de Windows.

Les prototypes des méthodes pour Visual Basic et C# pour GetFormRegionManifest sont présentés ci-dessous.

Dans Visual Basic :

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

Dans C# :

public object GetFormRegionManifest(string FormRegionName, int LCID)

GetFormRegionIcon

Au moment de démarrer, Outlook lit la liste des zones de formulaire dans le Registre Windows et met en cache les données associées aux zones de formulaire. Si une zone de formulaire a été inscrite avec un ProgID, Outlook a recours au complément correspondant en appelant son implémentation de GetFormRegionIcon pour toute icône dans le manifeste XML qui a addin comme valeur d’un élément enfant de l’élément icons . Pour plus d’informations sur l’utilisation d’un complément pour spécifier des icônes, voir Comment : Utiliser un complément pour spécifier des icônes pour une zone de formulaire.

Les prototypes des méthodes pour Visual Basic et C# pour GetFormRegionIcon sont présentés ci-dessous.

Dans 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 

Dans C# :

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

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.