次の方法で共有


テーブル通知の表示について

適用対象: Outlook 2013 | Outlook 2016

表示テーブルの通知は、MAPI への表示テーブルの作成を担当するサービス プロバイダーによって送信されます。 MAPI は、表示テーブルの IMAPITable::Advise メソッドを呼び出し、テーブル変更イベントを指定することで、これらの通知を登録します。

すべてのテーブル通知と同様に、表示テーブル通知には TABLE_NOTIFICATION 構造が含まれます。 この構造体の ulTableEvent メンバーと propIndex メンバーのみが重要です。他のメンバーは無視されます。 ulTableEvent メンバーは TABLE_ROW_MODIFIED に設定され、propIndex メンバーは対応する行のPR_CONTROL_ID (PidTagControlId) 列の値に設定されます。 MAPI は、コントロールに表示されるプロパティの IMAPIProp::GetProps メソッドを呼び出し、新しい値を表示することで、通知に応答します。

表示テーブル通知は、サービス プロバイダーがダイアログ ボックスの関連コントロールへの変更を調整するために使用できます。 たとえば、プロパティ インターフェイスの実装でダイアログ ボックスの 1 つ以上のフィールドを更新する必要がある場合は、たとえば、 PR_CONTROL_FLAGS (PidTagControlFlags) プロパティでDT_SET_IMMEDIATE フラグを設定した別のコントロールに応答して、表示テーブル通知を生成できます。 表示テーブル通知は、変更が行われたり、外部イベントが発生したために 1 つ以上のコントロールの値を再読み取りする必要があることをプロパティ インターフェイスの実装に警告できます。

サービス プロバイダーは、次の方法で表示テーブル通知を発行できます。

  • 表示テーブルがテーブル データ オブジェクトを使用してビルドされた場合は、 ITableData::HrNotify を呼び出します。

    • または-
  • プロバイダーの IMAPITable 実装を使用して表示テーブルがビルドされた場合は、独自のコードを使用します。

MAPI は、プロパティ インターフェイスの実装からコントロールの値を再読み取りすることで、必要に応じて表示テーブルの通知に応答します。 次の表では、MAPI が特定の種類のコントロールの通知を処理する方法に関する詳細について説明します。

Control MAPI アクション
ボタン
呼び出しが以前に失敗した場合、IMAPIProp::OpenPropertyを呼び出して、DTBLBUTTON 構造体の ulPRControl メンバーによって表されるプロパティを使用してコントロール オブジェクトを取得します。 コントロール オブジェクトの IMAPIControl::GetState を呼び出して、ボタンを有効にするかどうかを判断し、それに応じてボタンを有効または無効にします。
チェック ボックス
ulPRPropertyName メンバーの値を再読み取りします。
コンボ ボックス
DTBLCOMBOBOX 構造体の ulPRTableName メンバーに関連付けられているテーブルを再度開きます。 ulPRPropertyNameメンバーの値を含むすべての行を再読み込みします。
ドロップダウン リスト ボックス
DTBLDDLBX 構造体の ulPRTableName メンバーに関連付けられているテーブルを再度開き、すべての行を再読み込みします。 IMAPIProp::GetProps を呼び出して、ulPRDisplayProperty および ulPRSetProperty メンバーに格納されているプロパティの値取得します。
編集
プロパティを再読み込みし、再表示します。
グループ ボックス
通知を無視します。
Label
通知を無視します。
複数選択リスト ボックス
列の 1 つがエントリ識別子の場合は、リスト ボックスを更新します。 対応するオブジェクトは閉じられないか、再読み込みされません。
単一選択リスト ボックス
set プロパティを読み取り、それを識別します。
複数値リスト ボックス
プロパティを再読み込みし、リスト ボックスを再入力します。
タブ付きページ
このコントロールの通知はありません。すべてが静的です。
ラジオボタン
ボタンに関連付けられているプロパティを再読み取りし、DTBLRADIOBUTTON 構造体の ulPropTag メンバーに格納され、コントロールで適切な選択を行います。

関連項目