InfoPath 2003 オブジェクト モデルを使用してアプリケーション データにアクセスする

InfoPath 2003 と互換性のあるオブジェクト モデルは、フォームの基になる XML ドキュメントとフォーム定義 (.xsf) ファイルに関連する情報など、InfoPath アプリケーションに関する情報にアクセスするために使用できるオブジェクトとコレクションを提供します。 このデータは、 Application インターフェイスを使用してインスタンス化される InfoPath オブジェクト モデル階層の最上位オブジェクトを介してアクセスされます。

Visual Studio 2012 を使用して作成された InfoPath 2003 互換のマネージド コード フォーム テンプレート プロジェクトは、フォーム コード クラスのメソッドで_Startup変数を初期化thisApplicationします。これは、Application インターフェイスのメンバーにアクセスするために使用できます。 次の例では、アプリケーション インターフェイスの Name プロパティと Version プロパティを使用して、InfoPath の実行中のインスタンスの名前とバージョン番号を返します。 この情報は、UI2 インターフェイスの Alert メソッドを使用してメッセージ ボックスに表示されます。

thisXDocument.UI.Alert("Application name: " + thisApplication.Name +
   "\nApplication version: " + thisApplication.Version);
thisXDocument.UI.Alert("Application name: " & thisApplication.Name & _
   vbNewLine & "Application version: " & thisApplication.Version)

Visual C# の例では、警告メッセージの文字列内の文字への \n 参照は、InfoPath アンマネージ コードによって標準の新しい改行としてレンダリングされ、テキストが中断され、メッセージ ボックスの新しい行に配置されます。 現在の環境とプラットフォームに対して定義された新しい行値を明示的に使用するには、次の例に示すように、代わりに Environment.NewLine プロパティを使用します。

thisXDocument.UI.Alert("Application name: " + thisApplication.Name +
   Environment.NewLine + "Application version: " + 
   thisApplication.Version);

フォームの基になる XML ドキュメントからデータにアクセスする

開発者は、XDocument インターフェイスを使用して、フォームの基になる XML ドキュメントに関する情報にアクセスすることができます。アクセスできる情報には、フォームのソース XML データが格納されている XML ドキュメント オブジェクト モデル (DOM) への参照も含まれます。

次の例では、最初のメッセージ ボックスには、基になる XML ドキュメントが (IsDirty プロパティを使用して) 変更されたかどうか、およびデジタル署名されているかどうか (IsSigned プロパティを使用) など、XDocument インターフェイスから使用できるデータの一部が表示されます。 次のメッセージ ボックスでは、 XDocument インターフェイスの DOM プロパティを使用して、フォームの基になる XML ドキュメントのソース XML を表示します。

thisXDocument.UI.Alert("\nIsDirty: " + thisXDocument.IsDirty +
   "\nIsDOMReadOnly: " + thisXDocument.IsDOMReadOnly +
   "\nIsNew: " + thisXDocument.IsNew +
   "\nIsReadOnly: " + thisXDocument.IsReadOnly +
   "\nIsSigned: " + thisXDocument.IsSigned);
thisXDocument.UI.Alert(thisXDocument.DOM.xml);
thisXDocument.UI.Alert("IsDirty: " & thisXDocument.IsDirty & vbNewLine & _
   "IsDOMReadOnly: " & thisXDocument.IsDOMReadOnly & vbNewLine & _
   "IsNew: " & thisXDocument.IsNew & vbNewLine & _
   "IsReadOnly: " & thisXDocument.IsReadOnly & vbNewLine & _
   "IsSigned: " & thisXDocument.IsSigned)
thisXDocument.UI.Alert(thisXDocument.DOM.xml)

前の例で使用されている xml プロパティは、XML ドキュメント オブジェクト モデル (DOM) のプロパティです。 XML DOM の詳細については、MSXML 5.0 SDK のドキュメントを参照してください。

フォームのフォーム定義ファイルからデータにアクセスする

フォームに含まれるソース XML データへの XML DOM 参照など、フォームの .xsf ファイルに関する情報には、 XDocument インターフェイスを使用してアクセスすることもできます。 この情報には、 SolutionObject インターフェイスへの参照を返す Solution プロパティを使用してアクセスします。

次の例では、最初のアラートは、Uniform Resource Identifier (URI) の場所 (URI プロパティを使用) とそのバージョン番号 (Version プロパティを使用) など、SolutionObject インターフェイスで使用できるデータの一部を表示します。 次のアラートでは、SolutionObject インターフェイスの DOM プロパティを使用して、.xsf ファイルのソース XML を表示します。

thisXDocument.UI.Alert("PackageURL: " +
   thisXDocument.Solution.PackageURL +
   "\nURI: " + thisXDocument.Solution.URI +
   "\nVersion: " + thisXDocument.Solution.Version);
thisXDocument.UI.Alert(thisXDocument.Solution.DOM.xml);
thisXDocument.UI.Alert("PackageURL: " & _
   thisXDocument.Solution.PackageURL & vbNewLine & _
   "URI: " & thisXDocument.Solution.URI & vbNewLine & _
   "Version: " & thisXDocument.Solution.Version)
thisXDocument.UI.Alert(thisXDocument.Solution.DOM.xml)