Afficher les tables
S’applique à : Outlook 2013 | Outlook 2016
Un tableau d’affichage décrit comment afficher un type spécifique de boîte de dialogue : une ou plusieurs pages de propriétés à onglets sont dédiées à l’affichage et éventuellement à la modification d’une ou plusieurs propriétés. Une implémentation de l’interface IMAPIProp : IUnknown est associée à chaque table d’affichage. L’implémentation IMAPIProp conserve les données de propriété qui sont présentées dans la boîte de dialogue.
Les lignes d’une table d’affichage représentent les contrôles, ou objets d’interface utilisateur, qui sont affichés dans la boîte de dialogue. MAPI définit de nombreux types de contrôles, certains avec des valeurs statiques et d’autres avec des valeurs dynamiques qu’un utilisateur peut modifier. La plupart des contrôles peuvent être associés aux propriétés gérées avec l’implémentation IMAPIProp . Lorsqu’un utilisateur modifie la valeur d’un contrôle modifiable, la propriété correspondante est mise à jour.
Les fournisseurs de services implémentent des tables d’affichage et l’interface IMAPIProp . La création d’une table d’affichage est similaire à l’écriture d’un programme avec un langage de script. Les fournisseurs de services peuvent créer une table d’affichage en :
Appel de la fonction BuildDisplayTable .
- Ou-
Ajout d’un code personnalisé qui remplit la table d’affichage directement à l’aide d’un objet de données de table, objet qui prend en charge l’interface ITableData : IUnknown .
La fonction BuildDisplayTable combine les informations des structures de table d’affichage avec des éléments visuels d’une ressource de boîte de dialogue pour générer des lignes de table d’affichage. La fonction retourne un pointeur vers une implémentation d’interface IMAPITable : IUnknown et, si nécessaire, un pointeur vers une implémentation d’interface ITableData .
L’utilisation de BuildDisplayTable pour créer une table d’affichage est simple et facilite la maintenance lorsque des éléments visuels de l’affichage changent. Toutefois, les fournisseurs de services qui préfèrent ne pas utiliser BuildDisplayTable peuvent créer une table d’affichage avec du code personnalisé qui utilise les méthodes de ITableData. Par exemple, les fournisseurs de services qui ont une structure de modèle existante pour leurs pages de propriétés peuvent souhaiter créer du code personnalisé plutôt que d’utiliser BuildDisplayTable.
Les fournisseurs de services peuvent implémenter l’interface de propriété pour leur table d’affichage de différentes façons. Cela comprend :
Fourniture d’une implémentation IMAPIProp standard : IUnknown .
Fourniture d’une implémentation IMAPIProp encapsulée qui inclut un traitement spécial avant d’effectuer les appels standard.
Fourniture d’un IPropData : implémentation IMAPIProp .
Le type d’implémentation dépend des caractéristiques des données à afficher et du fournisseur de services responsable. Par exemple, s’il existe une relation implicite entre les données de deux contrôles de modification et l’un des contrôles modifiés, l’implémentation IMAPIProp doit modifier la valeur de l’autre contrôle de manière appropriée.
Les tables d’affichage ont les propriétés suivantes dans leur jeu de colonnes obligatoire :
Valeur | |
---|---|
PR_XPOS (PidTagXCoordinate) |
PR_YPOS (PidTagYCoordinate) |
PR_DELTAX (PidTagDeltaX) |
PR_DELTAY (PidTagDeltaY) |
PR_CONTROL_TYPE (PidTagControlType) |
PR_CONTROL_FLAGS (PidTagControlFlags) |
PR_CONTROL_STRUCTURE (PidTagControlStructure) |
PR_CONTROL_ID (PidTagControlId) |
PR_XPOS et PR_YPOS spécifiez les coordonnées X et Y du coin supérieur gauche du contrôle. Les unités horizontales représentent 1/4 de l’unité de largeur de base du dialogue ; les unités verticales représentent 1/8 de l’unité de hauteur de base du dialogue. Windows calcule les unités de base du dialogue actuel à partir de la hauteur et de la largeur de la police système actuelle. Les coordonnées sont relatives à l’origine de la zone de page de propriétés. La taille des pages de propriétés est limitée à environ 200 par 180 unités de dialogue.
PR_DELTAX et PR_DELTAY sont la largeur et la hauteur du contrôle. Il s’agit de valeurs ULONG. Les unités de largeur représentent 1/4 de l’unité de largeur de base du dialogue ; les unités de hauteur représentent 1/8 de l’unité de hauteur de base du dialogue. Les coordonnées sont relatives à l’origine du contrôle.
Les quatre autres propriétés décrivent différentes caractéristiques du contrôle. PR_CONTROL_TYPE indique le type de contrôle. MAPI définit douze types de contrôles, chacun avec un ensemble d’attributs différent. Ces attributs sont décrits dans la propriété flags, PR_CONTROL_FLAGS. Parmi les exemples d’attributs, citons si un contrôle est modifiable ou obligatoire.
La structure de contrôle , PR_CONTROL_STRUCTURE, contient des informations relatives au type particulier de contrôle. Chaque type de contrôle est décrit avec une structure différente. Par exemple, les contrôles de modification sont décrits avec la structure DTBLEDIT . Les structures DTBLEDIT contiennent des membres qui répertorient le nombre et les types spécifiques de caractères pouvant être placés sur le contrôle, ainsi qu’une balise de propriété qui identifie la propriété dont la valeur doit être affichée dans le contrôle. PR_CONTROL_STRUCTURE est stocké en tant que propriété binaire.
L’identificateur de contrôle, PR_CONTROL_ID, identifie de manière unique le contrôle dans la boîte de dialogue décrite par le tableau d’affichage. PR_CONTROL_ID est défini à partir des valeurs placées dans les membres lpbNotif et cbNotif de la structure DTCTL utilisée par BuildDisplayTable pour créer la table d’affichage. Étant donné que MAPI combine parfois des tables d’affichage, l’identificateur dans PR_CONTROL_ID doit toujours être unique. En règle générale, les fournisseurs attribuent une structure GUID à PR_CONTROL_ID pour garantir son unicité. La propriété PR_CONTROL_ID est incluse dans la structure TABLE_NOTIFICATION lorsqu’une notification de table d’affichage est générée.
Pour plus d’informations sur les tables d’affichage, consultez Display Table Implementation et About Display Table Notifications.