FieldDefinition ストリーム構造

適用対象: Outlook 2013 | Outlook 2016

FieldDefinition ストリーム構造体には、ユーザー定義フィールドのフィールド定義か、組み込みフィールドのデータ バインディング設定のセットが含まれます。

構造体にユーザー定義フィールドのフィールド定義が含まれている場合は、プログラムによって FieldDefinition ストリーム構造体を操作できます。 構造体に組み込みフィールドの設定が含まれている場合は、プログラムで FieldDefinition 構造体を作成または変更しないでください。 組み込みフィールドに対してこのような設定を維持するには、Microsoft Outlook フォーム Designerを使用する必要があります。

注:

Outlook では、PropDefV1 と PropDefV2 の 2 つの形式のフィールド定義がサポートされています。 フィールド定義の PropDefV1 形式には、Flags、VT、DispId、NmidNameLength、NmidName、NameANSI、FormulaANSI、ValidationRuleANSI、ValidationTextANSI、ErrorANSI のデータ要素が含まれています。 PropDefV2 形式には、同じ要素と InternalType 要素と SkipBlocks 要素が含まれています。

Outlook では、FormulaANSI、ValidationRuleANSI、ValidationTextANSI のデータ要素の Unicode バージョンは PropDefV2 フィールド定義形式では維持されません。 これらの要素に ASCII 以外の文字が含まれている場合、Outlook が実行されているコンピューターの ANSI コード ページによっては、これらの文字が一貫して解釈されないことがあります。 したがって、これらのデータ要素には、完全に ASCII 文字で構成される文字列値のみを使用する必要があります。

このストリームのデータ要素は、次に指定した順序で互いに直ちに続く、リトル エンディアン バイト順に格納されます。

  • フラグ: DWORD (4 バイト)、値と意味が次の表に示されている 0 個以上のフラグの組み合わせ。

    フラグ名 説明
    PDO_IS_CUSTOM
    0x00000001
    FieldDefinition 構造体には、ユーザー定義フィールドの定義が含まれています。
    PDO_REQUIRED
    0x00000002
    このフィールドにバインドされたフォーム コントロールの場合、[プロパティ] ダイアログ ボックスの [検証] タブで、このフィールドの [値] の [チェック] ボックスが選択されています。
    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 の配列。 ユーザー定義フィールド定義の場合、これはフィールド名の Unicode (UTF-16) 表現です。 この配列の数は NmidNameLength と等しくなります。

  • NameANSI: PackedAnsiString ストリーム構造体。 これは、フィールド名の ANSI 表現です。

  • FormulaANSI: PackedAnsiString ストリーム構造体。 これは、フィールドの計算式の ANSI 表現です。 このフィールドにバインドされたフォーム コントロールの [プロパティ] ダイアログ ボックスの [] タブの [初期値] セクションに表示されます。

  • ValidationRuleANSI: PackedAnsiString ストリーム構造体。 これは、フィールドの検証式の ANSI 表現です。 このフィールドにバインドされたフォーム コントロールの [プロパティ] ダイアログ ボックスの [検証] タブの [検証] のテキスト ボックスに表示されます。

  • ValidationTextANSI: PackedAnsiString ストリーム構造体。 これは、フィールドの検証エラー テキストの ANSI 表現です。 このフィールドにバインドされたフォーム コントロールの [プロパティ] ダイアログ ボックスの [検証] タブで検証が失敗した場合は、[このメッセージを表示する] のテキスト ボックスに表示されます。

  • ErrorANSI: PackedAnsiString ストリーム構造体。 Outlook では、この要素は使用されません。この要素は空の文字列に設定する必要があります。

  • InternalType: DWORD (4 バイト)、フィールドの内部型。 このデータ要素は、フィールド定義形式が PropDefV2 の場合にのみ存在します。 内部型は次のいずれかの値で、それぞれがユーザー定義フィールドの [ 新しいフィールド ] ダイアログ ボックスの型に対応します。

    内部型名 [ 新しいフィールド] ダイアログ ボックスの対応する型
    iTypeString
    0
    テキスト
    iTypeNumber
    1
    数値
    iTypePercent
    2
    Percent
    通貨
    3
    Currency
    iTypeBool
    4
    Yes/No
    iTypeDateTime
    5
    日付/時刻
    iTypeDuration
    6
    Duration
    iTypeCombination
    7
    [数式フィールドの組み合わせ] ダイアログ ボックスで選択されている 後続のフィールドを無視して、最初の空でないフィールドのみを表示 する組 み合わせ
    iTypeFormula
    8

    iTypeResult
    9
    この型は、ユーザー定義フィールドには使用されません。
    iTypeVariant
    10
    この型は、ユーザー定義フィールドには使用されません。
    iTypeFloatResult
    11
    この型は、ユーザー定義フィールドには使用されません。
    iTypeConcat
    12
    [結合フィールド] ダイアログ ボックスで [ 結合フィールドとテキスト フラグメントを相互 に結合する] オプションが選択されている 組み合わせ
    iTypeKeywords
    13
    Keyword
    iTypeInteger
    14
    Integer
  • SkipBlocks: 1 つ以上の SkipBlock ストリーム構造体のシリーズ。 このデータ要素は、フィールド定義形式が PropDefV2 の場合にのみ存在します。 フィールド定義形式が PropDefV2 の場合、系列には少なくとも 1 つの SkipBlock 構造体、Size データ要素が 0 に等しい SkipBlock 構造体が含まれている必要があります。また、この SkipBlock 構造体で系列を開始および終了する必要があります。

    SkipBlock 構造体の目的は、SkipBlocks シリーズ内の相対位置によって異なります。 フィールド定義が PropDefV2 形式で、最初の構造体が終端構造ではない場合 (Size データ要素が 0 より大きい場合)、Outlook は最初の SkipBlock 構造体で Unicode (UTF-16) のフィールド名を指定すると想定します。

    重要

    最初の SkipBlock が終了構造体の場合は、NameANSI データ要素を使用してフィールド名を決定します。 その文字列に ASCII 以外の文字が含まれている場合、Outlook が実行されているコンピューターの ANSI コード ページによっては、それらの文字が一貫性なく解釈される可能性があります。 このような不整合を防ぐには、少なくともフィールド名に ASCII 以外の文字が含まれている場合は、作成するフィールド定義で常に最初の SkipBlock を指定してください。

    フィールド定義形式の将来のバージョンで FieldDefinition ストリームに追加のデータが導入される場合、Size データ要素が 0 に等しい SkipBlock 構造体が終了する前に、このデータを SkipBlock シリーズの追加の SkipBlock ストリーム構造体として格納できます。 以前のバージョンの Outlook では、終了する SkipBlock 構造体まで、これらの追加の SkipBlock 構造体を安全に無視し、サポートするすべてのブロックを正しく処理できます。

関連項目