Compartilhar via


Tabelas de exibição

Aplica-se a: Outlook 2013 | Outlook 2016

Uma tabela de exibição descreve como mostrar um tipo específico de caixa de diálogo – uma com uma ou mais páginas de propriedades com tabbed dedicadas à exibição e possivelmente edição de uma ou mais propriedades. Associado a cada tabela de exibição está uma implementação de interface IMAPIProp : IUnknown . A implementação IMAPIProp mantém os dados de propriedade apresentados na caixa de diálogo.

As linhas em uma tabela de exibição representam os controles ou objetos de interface do usuário exibidos na caixa de diálogo. MAPI define muitos tipos de controles, alguns com valores estáticos e alguns com valores dinâmicos que um usuário pode alterar. A maioria dos controles pode ser associada a propriedades mantidas com a implementação IMAPIProp . Quando um usuário altera o valor de um controle modificável, a propriedade correspondente é atualizada.

Os provedores de serviço implementam tabelas de exibição e a interface IMAPIProp . A criação de uma tabela de exibição é semelhante à escrita de um programa com uma linguagem de script. Os provedores de serviços podem criar uma tabela de exibição por:

  • Chamando a função BuildDisplayTable .

    • Ou-
  • Incluindo o código personalizado que preenche a tabela de exibição diretamente usando um objeto de dados de tabela – um objeto que dá suporte à interface ITableData : IUnknown .

A função BuildDisplayTable combina informações de estruturas de tabela de exibição com elementos visuais de um recurso de caixa de diálogo para criar linhas de tabela de exibição. A função retorna um ponteiro para uma implementação de interface IMAPITable : IUnknown e, se solicitada, um ponteiro para uma implementação de interface ITableData .

Usar o BuildDisplayTable para criar uma tabela de exibição é simples e facilita a manutenção quando elementos visuais da exibição mudam. No entanto, provedores de serviços que preferem não usar BuildDisplayTable podem criar uma tabela de exibição com código personalizado que usa os métodos de ITableData. Por exemplo, os provedores de serviços que têm uma estrutura de modelo existente para suas páginas de propriedade podem querer criar código personalizado em vez de usar BuildDisplayTable.

Há várias maneiras pelas quais os provedores de serviços podem implementar a interface da propriedade para sua tabela de exibição. Eles incluem:

O tipo de implementação depende das características dos dados a serem exibidos e do provedor de serviços responsável. Por exemplo, se houver uma relação implícita entre os dados em dois controles de edição e uma das alterações de controle, a implementação IMAPIProp deverá alterar o valor do outro controle adequadamente.

As tabelas de exibição têm as seguintes propriedades no conjunto de colunas necessário:

Valor
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 e PR_YPOS especificar as coordenadas X e Y do canto superior esquerdo do controle. As unidades horizontais são 1/4 da unidade de largura da base de diálogo; as unidades verticais são 1/8 da unidade de altura base da caixa de diálogo. O Windows calcula as unidades de base de diálogo atuais da altura e largura da fonte do sistema atual. As coordenadas são relativas à origem da área da página de propriedade. O tamanho das páginas de propriedades é limitado a aproximadamente 200 por 180 unidades de diálogo.

PR_DELTAX e PR_DELTAY são a largura e a altura do controle. Estes são valores ULONG. As unidades de largura são 1/4 da unidade de largura base da caixa de diálogo; as unidades de altura são 1/8 da unidade de altura base da caixa de diálogo. As coordenadas são relativas à origem do controle.

As outras quatro propriedades descrevem várias características do controle. PR_CONTROL_TYPE indica o tipo de controle. O MAPI define doze tipos de controles, cada um com um conjunto diferente de atributos. Esses atributos são descritos na propriedade flags, PR_CONTROL_FLAGS. Exemplos de atributos incluem se um controle é editável ou necessário.

A estrutura de controle, PR_CONTROL_STRUCTURE, contém informações relevantes para o tipo específico de controle. Cada tipo de controle é descrito com uma estrutura diferente. Por exemplo, os controles de edição são descritos com a estrutura DTBLEDIT . As estruturas DTBLEDIT contêm membros que listam o número e tipos específicos de caracteres que podem ser colocados no controle e uma marca de propriedade que identifica a propriedade cujo valor deve ser exibido no controle. PR_CONTROL_STRUCTURE é armazenado como uma propriedade binária.

O identificador de controle, PR_CONTROL_ID, identifica exclusivamente o controle na caixa de diálogo descrita pela tabela de exibição. PR_CONTROL_ID é definido a partir dos valores colocados nos membros lpbNotif e cbNotif da estrutura DTCTL usada pelo BuildDisplayTable para criar a tabela de exibição. Como o MAPI às vezes combina tabelas de exibição, o identificador em PR_CONTROL_ID deve ser sempre exclusivo. Normalmente, os provedores atribuem uma estrutura GUID a PR_CONTROL_ID para garantir sua exclusividade. A propriedade PR_CONTROL_ID é incluída na estrutura TABLE_NOTIFICATION quando uma notificação de tabela de exibição é gerada.

Para obter mais informações sobre tabelas de exibição, consulte Implementação da Tabela de Exibição e Sobre Notificações de Tabela de Exibição.

Confira também

Tabelas MAPI