Поделиться через


Структура потока 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 и по-прежнему правильно обрабатывать все блоки, которые они поддерживают.

См. также