InfoPath フォームでは多くのことを実行できます。しかし、ときには 1 つのフォームから、関連するタスクを実行する別のフォームを開きたい場合があります。また、全体的なソリューションの一部として、多数のフォームを連携させることが必要になる場合もあります。
このタスクでは、複数のボタンを作成し、それぞれが XDocuments コレクションの New、NewFromSolution、NewFromSolutionWithData の各メソッドを使用する補助フォームを開くようにします。各メソッドでは、補助フォームまたはドキュメントへの絶対パスが要求されます。このタスクでは補助フォーム、ソース フォーム、および作成されるドキュメントをすべて同じフォルダに保存するので、XDocument.Solution.URI プロパティからパスを取得します。これによって、フォームおよびテンプレートを移動してもコードを更新せずにすみます。まず、補助フォーム用に新しい空白のフォームを作成しておきます。
補助フォーム
補助フォームの作成
- ビューの一番上に「Supporting Form」と入力し、Enter キーを押します。
- [コントロール] 作業ウィンドウから、テキスト ボックスを挿入します。
- [ファイル] メニューの [上書き保存] をクリックし、[保存] をクリックします。
- 「MultiForm」という名前のフォルダを作成します。
- ファイルに「Supporting.xsn」という名前を付け、[保存] をクリックします。
- InfoPath を終了します。
補助フォームを使用してテスト ドキュメントを作成する
- MultiForm フォルダ から Supporting.xsn ファイルを開きます。
- テキスト ボックスに「Test Data」と入力します。
- フォームを「Form1.xml」という名前で MultiForm フォルダに保存します。
- InfoPath を終了します。
これで、補助フォームおよびテスト ドキュメントを作成できたので、今度は補助フォームを開くために使用するソース フォームを作成します。もう一度、新しい空白のフォームを作成しておきます
ソース フォーム
ソース フォームの作成
- ビューの一番上に「Source Form」と入力し、Enter キーを押します。
- [コントロール] 作業ウィンドウから、ボタンを 3 つ挿入します。
絶対パスの識別
- [ツール] メニューの [プログラミング | 読み込み時のイベント] をクリックします。
- 他の関数からグローバルにアクセスできるように、次のような sFormPath 変数宣言を OnLoad イベント ハンドラの直前 (外側) に追加します。
- OnLoad イベント ハンドラに次のコードを追加します。
|
var sUri = XDocument.Solution.URI; var i = sUri.lastIndexOf("\\"); if(-1 == i) i = sUri.lastIndexOf("/"); sFormPath = sUri.substring(0, i + 1);
|
- InfoPath のデザイン モードに戻ります。
[New] ボタンのコードを追加する
- 1 つ目のボタンをダブルクリックし、ラベルを「New」に変更し、ID を「btnNew」に変更してから、[フォームのコードを編集] をクリックします。
- btnNew OnClick イベント ハンドラに次のコードを追加します。
|
Application.XDocuments.New(sFormPath + "Form1.xml");
|
- InfoPath デザイン モードに戻ります。
[NewFromSolution] ボタンのコードを追加する
- 2 つ目のボタンをダブルクリックし、ラベルを「NewFromSolution」に変更し、ID を「btnNewFromSolution」に変更してから、[フォームのコードを編集] をクリックします。
- btnNewFromSolution OnClick イベント ハンドラに次のコードを追加します。
|
Application.XDocuments.NewFromSolution(sFormPath + "Supporting.xsn");
|
- InfoPath デザイン モードに戻ります。
[NewFromSolutionWithData] ボタンの背後のコードを追加する
- 3 つ目のボタンをダブルクリックし、ラベルを「NewFromSolutionWithData」に変更し、ID を「btnNewFromSolutionWithData」に変更してから、[フォームのコードを編集] をクリックします。
- btnNewFromSolutionWithData OnClick イベント ハンドラに次のコードを追加します。
|
Application.XDocuments.NewFromSolutionWithData(sFormPath + "Form1.xml", sFormPath + "Supporting.xsn");
|
フォームの保存
- コードを保存し、スクリプト エディタを終了します。
- InfoPath のデザイン モードで、[ファイル] メニューの [上書き保存] をクリックし、[保存] をクリックします。
- MultiForm フォルダに移動します。
- ファイルに「Source.xsn」という名前を付け、[保存] をクリックします。
- InfoPath を終了します。
確認
これで、ソース テンプレート、補助テンプレート、補助テスト ドキュメントを作成できたので、さまざまなメソッドを試します。フォームをプレビューし、それぞれのボタンをクリックして結果を確認します。
[New] または [NewFromSolutionWithData] ボタンを初めてクリックしたときに、図 1 のようなセキュリティの警告ダイアログ ボックスが表示されるのにお気づきでしょう。このダイアログ ボックスを非表示または無効にする方法については、「Internet Explorer のクロスドメイン セキュリティのダイアログ ボックスが表示されないようにする」を参照してください。

図 1 Internet Explorer のクロスドメイン データ アクセスのセキュリティ リスクを通知するダイアログ ボックス
©2005 Greg Collins. All rights reserved. Licensed to Autonomy Systems, LLC for display on InfoPathDev.com.
英文記事: Launch a Supporting Formよりの翻訳