Структура потока FieldDefinition
Область применения: Outlook 2013 | Outlook 2016
Структура потока FieldDefinition содержит определение поля, определяемого пользователем, или набор параметров привязки данных для встроенного поля.
Вы можете программно управлять структурой потока FieldDefinition, если структура содержит определение поля для определяемого пользователем поля. Не следует пытаться программно создать или изменить структуру FieldDefinition, если структура содержит параметры для встроенного поля. Для поддержки таких параметров для встроенных полей следует использовать Designer Microsoft Outlook Forms.
Примечание.
Outlook поддерживает два формата определений полей: PropDefV1 и PropDefV2. Формат PropDefV1 определений полей содержит следующие элементы данных: Flags, VT, DispId, NmidNameLength, NmidName, NameANSI, FormulaANSI, ValidationRuleANSI, ValidationTextANSI и ErrorANSI. Формат PropDefV2 содержит те же элементы и элементы InternalType и SkipBlocks.
Outlook не поддерживает версию Юникода для элементов данных FormulaANSI, ValidationRuleANSI и ValidationTextANSI в формате определения поля PropDefV2. Если эти элементы содержат символы, отличные от ASCII, эти символы могут интерпретироваться несогласованно в зависимости от кодовой страницы ANSI компьютера, на котором работает Outlook. Поэтому для этих элементов данных следует использовать только строковые значения, полностью состоящие из символов ASCII.
Элементы данных в этом потоке хранятся в байтовом порядке с небольшим эндианом, сразу после друг друга в указанном ниже порядке.
Флаги: DWORD (4 байта), сочетание нуля или нескольких флагов, значения и значения которых перечислены в следующей таблице.
Имя флага Значение Описание PDO_IS_CUSTOM 0x00000001 Структура FieldDefinition содержит определение определяемого пользователем поля. PDO_REQUIRED 0x00000002 Для элемента управления формой, привязанного к этому полю, на вкладке Проверка диалогового окна Свойства выбрано поле проверка значение A. PDO_PRINT_SAVEAS 0x00000004 Для элемента управления формы, привязанного к этому полю, на вкладке "Проверка" диалогового окна "Свойства" выбрано поле проверка "Включить это поле для печати" и "Сохранить как". PDO_CALC_AUTO 0x00000008 Для элемента управления формой, привязанного к этому полю, на вкладке Значение диалогового окна Свойства выбрано поле проверка для параметра Вычислить эту формулу автоматически. PDO_FT_CONCAT 0x00000010 Это поле типа Комбинация , и в нем есть поля Соединения и любые фрагменты текста с выбранным друг другом параметром в диалоговом окне Поле комбинированной формулы . PDO_FT_SWITCH 0x00000020 Это поле имеет тип Комбинация и имеет параметр Показывать только первое непустое поле, игнорируя последующие поля, выбранные в диалоговом окне Поле формулы сочетания . PDO_PRINT_SAVEAS_DEF 0x00000040 Этот флаг не используется в Outlook, но он включен для всех определяемых пользователем определений полей. VT: WORD (2 байта), тип данных поля, который является константой из перечисления VARENUM .
DispId: DWORD (4 байта), идентификатор отправки поля. Для определяемого пользователем поля значение равно 0.
NmidNameLength: WORD (2 байта), количество элементов в массиве NmidName.
NmidName: массив WCHAR. Для определяемого пользователем определения поля это представление имени поля в Юникоде (UTF-16). Число этого массива равно NmidNameLength.
NameANSI: структура потока PackedAnsiString . Это представление ANSI имени поля.
FormulaANSI: структура потока PackedAnsiString. Это an ANSI-представление формулы вычисления для поля. Он отображается в разделе Начальное значение вкладки Значение диалогового окна Свойства элемента управления формы, привязанного к этому полю.
ValidationRuleANSI: структура потока PackedAnsiString. Это an ANSI-представление формулы проверки поля. Он отображается в текстовом поле формулы проверки на вкладке Проверка диалогового окна Свойства элемента управления формы, привязанного к этому полю.
ValidationTextANSI: структура потока PackedAnsiString. Это an ANSI-представление текста ошибки проверки поля. Оно отображается в текстовом поле Отображение этого сообщения, если проверка завершается ошибкой на вкладке Проверка диалогового окна Свойства элемента управления формы, привязанного к этому полю.
ErrorANSI: структура потока PackedAnsiString. Outlook не использует этот элемент; Для этого элемента следует задать пустую строку.
InternalType: DWORD (4 байта), внутренний тип поля. Этот элемент данных присутствует только в том случае, если формат определения поля — PropDefV2. Внутренний тип является одним из следующих значений, каждое из которых соответствует типу в диалоговом окне Создание поля для определяемых пользователем полей.
Имя внутреннего типа Value (Значение) Соответствующий тип в диалоговом окне "Новое поле " iTypeString 0 Текст iTypeNumber 1 Number iTypePercent 2 Percent Денежный 3 Currency iTypeBool 4 Yes/No iTypeDateTime 5 Дата/время iTypeDuration 6 Duration iTypeCombination 7 Сочетание, с отображением только первого непустого поля, игнорируя последующие поля, выбранные в диалоговом окне Поле формулы сочетания . iTypeFormula 8 Formula iTypeResult 9 Этот тип не используется для определяемых пользователем полей. iTypeVariant 10 Этот тип не используется для определяемых пользователем полей. iTypeFloatResult 11 Этот тип не используется для определяемых пользователем полей. iTypeConcat 12 Сочетание с полями соединения и фрагментами текста, выбранными в диалоговом окне Поле формулы . iTypeKeywords 13 Ключевое слово iTypeInteger 14 Integer SkipBlocks: серия из одной или нескольких структур потока SkipBlock . Этот элемент данных присутствует только в том случае, если формат определения поля — PropDefV2. Если формат определения поля — PropDefV2, то ряд должен содержать по крайней мере одну структуру SkipBlock, структуру SkipBlock с элементом данных Size, равным 0, а ряд должен начинаться и заканчиваться этой структурой SkipBlock.
Назначение структуры SkipBlock зависит от ее относительного положения в серии SkipBlocks. Если определение поля имеет формат PropDefV2, а первая структура не является завершающей (элемент данных Size больше 0), Outlook предполагает, что первая структура SkipBlock указывает имя поля в Юникоде (UTF-16).
Важно!
Если первый SkipBlock является завершающей структурой, для определения имени поля используется элемент данных NameANSI. Если эта строка содержит символы, отличные от ASCII, эти символы могут интерпретироваться несогласованно в зависимости от кодовой страницы ANSI компьютера, на котором запущен Outlook. Чтобы избежать таких несоответствий, всегда указывайте первый SkipBlock в создаваемых определениях полей, по крайней мере если имя поля содержит символы, отличные от ASCII.
Если в будущей версии формата определения поля вводятся дополнительные фрагменты данных в потоке FieldDefinition, эти данные могут храниться в виде дополнительных структур потока SkipBlock в серии SkipBlocks до завершения структуры SkipBlock с элементом данных Size, равным 0. Более ранние версии Outlook могут спокойно игнорировать эти дополнительные структуры SkipBlock вплоть до конца структуры SkipBlock и по-прежнему правильно обрабатывать все блоки, которые они поддерживают.