Отображение таблиц
Область применения: Outlook 2013 | Outlook 2016
В таблице отображения описывается, как отобразить диалоговое окно определенного типа— одно из которых содержит одну или несколько страниц свойств с вкладками, выделенных для отображения и, возможно, редактирования одного или нескольких свойств. С каждой таблицей отображения связана реализация интерфейса IMAPIProp : IUnknown . Реализация IMAPIProp поддерживает данные свойств, представленные в диалоговом окне.
Строки в таблице отображения представляют элементы управления или объекты пользовательского интерфейса, отображаемые в диалоговом окне. MAPI определяет многие типы элементов управления, некоторые со статическими значениями, а некоторые с динамическими значениями, которые пользователь может изменить. Большинство элементов управления можно связать со свойствами, поддерживаемыми реализацией IMAPIProp . Когда пользователь изменяет значение изменяемого элемента управления, обновляется соответствующее свойство.
Поставщики услуг реализуют таблицы отображения и интерфейс IMAPIProp . Создание отображаемой таблицы аналогично написанию программы на языке сценариев. Поставщики услуг могут создать таблицу отображения, выполнив следующие действия:
Вызов функции BuildDisplayTable .
- Или-
Включая пользовательский код, который заполняет таблицу отображения непосредственно с помощью объекта данных таблицы — объекта, поддерживающего интерфейс ITableData : IUnknown .
Функция BuildDisplayTable объединяет сведения из структур таблиц отображения с визуальными элементами из ресурса диалогового окна для создания строк таблицы отображения. Функция возвращает указатель на реализацию интерфейса IMAPITable : IUnknown и, при необходимости, указатель на реализацию интерфейса ITableData .
Создание таблицы отображения с помощью BuildDisplayTable упрощает обслуживание при изменении визуальных элементов дисплея. Однако поставщики служб, которые предпочитают не использовать BuildDisplayTable , могут создать таблицу отображения с пользовательским кодом, использующим методы ITableData. Например, поставщикам служб, имеющим существующую структуру шаблонов для страниц свойств, может потребоваться создать пользовательский код, а не использовать BuildDisplayTable.
Поставщики услуг могут реализовать интерфейс свойств для таблицы отображения различными способами. В том числе:
Предоставление стандартной реализации IMAPIProp: IUnknown .
Предоставление упаковаемой реализации IMAPIProp , которая включает специальную обработку перед выполнением стандартных вызовов.
Предоставление IPropData: реализация IMAPIProp .
Тип реализации зависит от характеристик отображаемых данных и ответственного поставщика услуг. Например, если существует неявная связь между данными в двух элементах управления изменением и изменением одного из элементов управления, реализация IMAPIProp должна соответствующим образом изменить значение другого элемента управления.
Отображаемые таблицы имеют следующие свойства в требуемом наборе столбцов:
Значение | |
---|---|
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 и PR_YPOS указать координаты X и Y левого верхнего угла элемента управления. Горизонтальные единицы — это 1/4 единицы базовой ширины диалога; вертикальные единицы — это 1/8 от базовой единицы высоты диалога. Windows вычисляет текущие базовые единицы диалога на основе высоты и ширины текущего системного шрифта. Координаты относятся к источнику области страницы свойства. Размер страниц свойств ограничен примерно 200 на 180 диалоговых единиц.
PR_DELTAX и PR_DELTAY — это ширина и высота элемента управления. Это значения ULONG. Единицы ширины — 1/4 от единицы базовой ширины диалогового окна; единицы высоты — 1/8 от единицы базовой высоты диалога. Координаты относятся к источнику элемента управления .
Другие четыре свойства описывают различные характеристики элемента управления. PR_CONTROL_TYPE указывает тип элемента управления. MAPI определяет двенадцать типов элементов управления, каждый из которых имеет свой набор атрибутов. Эти атрибуты описаны в свойстве flags PR_CONTROL_FLAGS. Примеры атрибутов включают, является ли элемент управления редактируемым или обязательным.
Структура элемента управления , PR_CONTROL_STRUCTURE, содержит сведения, относящиеся к конкретному типу элемента управления. Каждый тип элемента управления описывается с другой структурой. Например, элементы управления редактированием описываются со структурой DTBLEDIT . Структуры DTBLEDIT содержат элементы, которые перечисляют количество и определенные типы символов, которые можно разместить в элементе управления, и тег свойства, определяющий свойство, значение которого должно отображаться в элементе управления . PR_CONTROL_STRUCTURE хранится как двоичное свойство.
Идентификатор элемента управления , PR_CONTROL_ID, однозначно идентифицирует элемент управления в диалоговом окне, описанном в таблице отображения. PR_CONTROL_ID задается из значений, помещенных в члены lpbNotif и cbNotif структуры DTCTL , используемой BuildDisplayTable для создания таблицы отображения. Так как MAPI иногда объединяет таблицы отображения, идентификатор в PR_CONTROL_ID всегда должен быть уникальным. Как правило, поставщики назначают структуру GUIDPR_CONTROL_ID , чтобы обеспечить ее уникальность. Свойство PR_CONTROL_ID включается в структуру TABLE_NOTIFICATION при создании уведомления таблицы отображения.
Дополнительные сведения о отображаемых таблицах см. в разделах Реализация таблицы отображения и Сведения об уведомлениях о таблицах отображения.