Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 guias dedicadas a exibir e possivelmente editar uma ou mais propriedades. Associada a cada tabela de exibição está uma implementação de interface IMAPIProp : IUnknown . A implementação IMAPIProp mantém os dados de propriedade que são apresentados na caixa de diálogo.
As linhas em uma tabela de exibição representam os controles, ou objetos de interface do usuário, que são exibidos na caixa de diálogo. O MAPI define muitos tipos de controles, alguns com valores estáticos e outros 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ços implementam tabelas de exibição e a interface IMAPIProp . Criar uma tabela de exibição é semelhante a escrever um programa com uma linguagem de script. Os provedores de serviços podem criar uma tabela de exibição:
Chamando a função BuildDisplayTable .
- Ou -
Incluindo 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 solicitado, um ponteiro para uma implementação de interface ITableData .
Usar BuildDisplayTable para criar uma tabela de exibição é simples e facilita a manutenção quando os elementos visuais da exibição mudam. No entanto, os 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, provedores de serviços que têm uma estrutura de modelo existente para suas páginas de propriedades 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 de propriedade para sua tabela de exibição. Eles incluem:
Fornecendo uma implementação padrão IMAPIProp : IUnknown .
Fornecer uma implementação IMAPIProp encapsulada que inclui processamento especial antes de fazer as chamadas padrão.
Fornecendo uma implementação IPropData: IMAPIProp .
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 controles, a implementação IMAPIProp deverá alterar o valor do outro controle adequadamente.
As tabelas de exibição têm as seguintes propriedades em seu conjunto de colunas obrigató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 especificam as coordenadas X e Y do canto superior esquerdo do controle. As unidades horizontais são 1/4 da unidade de largura da base da caixa de diálogo; As unidades verticais são 1/8 da unidade de altura da base da caixa de diálogo. O Windows calcula as unidades base da caixa de diálogo atual a partir da altura e largura da fonte do sistema atual. As coordenadas são relativas à origem da área da página de propriedades. 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. Esses são valores ULONG. As unidades de largura são 1/4 da unidade de largura da base da caixa de diálogo; As unidades de altura são 1/8 da unidade de altura da 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 ou não.
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 por BuildDisplayTable para criar a tabela de exibição. Como às vezes o MAPI combina tabelas de exibição, o identificador em PR_CONTROL_ID sempre deve ser exclusivo. Normalmente, os provedores atribuem uma estrutura GUID ao PR_CONTROL_ID para garantir sua exclusividade. A propriedade PR_CONTROL_ID é incluída na estrutura TABLE_NOTIFICATION quando uma notificação da tabela de exibição é gerada.
Para obter mais informações sobre exibir tabelas, consulte Implementação de tabela de exibição e Sobre notificações de tabela de exibição.