次の方法で共有


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

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

Microsoft Visual Studio Tools for Applications (VSTA)、Visual Studio 2005 (Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System インストール済み)、または Visual Studio 2008 と Visual Studio Tools for Office を使用して作成した InfoPath 2003 互換マネージ コード フォーム テンプレート プロジェクトでは、フォーム コード クラスの _Startup メソッドの中で thisApplication 変数が初期化されます。この変数を使用すると、Application インターフェイスのメンバにアクセスできます。次の例では、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) への参照も含まれます。

次の例では、最初のメッセージ ボックスに XDocument インターフェイスから取得できるデータの一部が表示されます。表示されるのは、基となる XML ドキュメントに変更が加えられているかどうか (IsDirty プロパティを使用)、およびそれがデジタル署名されているかどうか (IsSigned プロパティを使用) という情報です。その次のメッセージ ボックスには、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 のドキュメントを参照してください。

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

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

次の例では、最初の通知に SolutionObject インターフェイスを通じて取得できるデータのいくつかを表示しています。表示されるのは、URI (Uniform Resource Identifier) での場所 (URI プロパティを使用) と、バージョン番号 (Version プロパティを使用) です。2 つ目の通知には、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)