[方法] InfoPath 2003 オブジェクト モデルを使用して警告とダイアログ ボックスを表示する方法
InfoPath 2003 オブジェクト モデルを使用するフォーム テンプレートの機能を拡張するためのコードを書く際、ユーザーにダイアログ ボックス形式で情報を表示すると便利な場合があります。ダイアログ ボックスと関連ユーザー インターフェイス要素をプログラムから表示するには、InfoPath で、UIObject インターフェイスのメソッドを使用します。
UIObject インターフェイスの概要
UIObject インターフェイスは、以下のメソッドを提供します。フォームの開発者は、これらを使用して、InfoPath のユーザーがフォームに入力する際に表示する各種のダイアログ ボックスを作成することができます。
名前 | 説明 |
---|---|
指定したメッセージ文字列を含む単純なメッセージ ボックスを表示します。このメソッドは、ユーザーからの入力が必要なく、メッセージを表示する必要がある場合にのみ使用します。表示されるダイアログ ボックスは、[OK] ボタンをクリックして閉じることができます。 |
|
ユーザーが入力可能なメッセージ ボックスをいくつかのボタンと共に表示します。返される値は、XdConfirmChoice 列挙定数の 1 つです。 |
|
[名前を付けて保存] ダイアログ ボックスにフォームの既定のファイル名を設定します。 |
|
[名前を付けて保存] ダイアログ ボックスが開いたときに参照を開始する場所を設定します。 |
|
既定の電子メール アプリケーション内で新しい電子メール メッセージを作成し、現在開いているフォームをメッセージに添付します。 |
|
指定した .html ファイルと場所引数に基づいてモーダル ダイアログ ボックスを表示します。このメソッドは、ユーザーに単純なメッセージ以上の内容を表示する必要があり、ユーザーから、Confirm メソッドで表示される [はい]、[いいえ]、および [キャンセル] ボタンでの単純な確認以上の内容のデータを受け取る必要がある場合に使用します。 |
|
組み込みの [デジタル署名] ダイアログ ボックスを表示します。 |
UIObject インターフェイスの使用
UIObject インターフェイスは、XDocument インターフェイスの UI プロパティを通じてアクセスされます。これは、フォーム コード クラスの _Startup
メソッドで初期化される thisXDocument
変数を通じてアクセスされます。次の例では、UIObject インターフェイスの ShowMailItem メソッドと Alert メソッドを使用する方法を示します。
thisXDocument.UI.ShowMailItem("someone@example.com","", "",
"Updated Form", "Here is the updated form that you requested.");
thisXDocument.UI.Alert("The e-mail message has been created.");
thisXDocument.UI.ShowMailItem("someone@example.com", "", "", _
"Updated Form", "Here is the updated form that you requested.")
thisXDocument.UI.Alert("The e-mail message has been created.")
ShowModalDialog メソッドの使用
この例では、UIObject インターフェイスの ShowModalDialog メソッドを使用して、HTML ファイル show.html 内で定義されるカスタム ダイアログ ボックスを表示する方法を示します。
public void CTRL1_5_OnClick(DocActionEvent e)
{
// Write your code here.
thisXDocument.UI.ShowModalDialog(
"show.html",(object)thisXDocument,200,450,50,50);
}
Public Sub CTRL1_5_OnClick(ByVal e As DocActionEvent)
' Write your code here.
thisXDocument.UI.ShowModalDialog( _
"show.html", _
DirectCast(thisXDocument, Object), 200, 450, 50, 50)
End Sub
Visual C# と Visual Basic のサンプルは両方とも、ShowModalDialog メソッドによって呼び出されるダイアログ ボックスを定義する "show.html" と名付けられた HTML ファイルに依存します。この HTML ファイルは、フォームからのデータを表示し、ユーザーが値を入力するためのテキスト ボックスを表示します。テキスト ボックス内の値は、ダイアログ ボックスが閉じたときにフォームに返されます。
<HTML>
<HEAD>
<script language="JScript">
function BtnClick()
{
xdocument = window.dialogArguments;
myXml = xdocument.DOM.xml
aForm = oForm.elements;
aForm.textBox.value = myXml;
}
</script>
</HEAD>
<BODY>
<H1><FONT face="Arial">This is a modal dialog box</FONT>
</H1>
<BUTTON onclick="BtnClick()" id="BUTTON1" type="button">
Get XML DOM
</BUTTON>
<FORM ID="oForm">
<INPUT Type="text" name="textBox">
</FORM>
</BODY>
</HTML>
重要 : |
---|
ShowModal メソッドが実行またはプレビューを行うには、完全な信頼が必要です。詳細については、「[方法] 完全信頼が必要なマネージ コード フォーム テンプレートをプレビューおよびデバッグする方法」を参照してください。 |
Windows フォームを使用したダイアログ ボックス
前の例で示したように、HTML ファイルを使用してダイアログ ボックスの内容を表示する代わりに、InfoPath フォームから、Windows フォームをダイアログ ボックスとして表示することができます。この例では、InfoPath フォーム上の ShowDialog と名付けられたボタンから、カスタム ダイアログ ボックスとして Windows フォームを表示する方法を示します。この場合は UIObject インターフェイスや InfoPath オブジェクト モデルのその他のメンバのインターフェイスを必要としません。
メモ : |
---|
Windows フォームを作成して、Microsoft Visual Studio Tools for Applications (VSTA) を使用して作成した InfoPath フォーム テンプレート プロジェクトに追加することはできません。Windows フォームを作成してフォーム テンプレート プロジェクトに追加するには、Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System と Visual Studio 2005 または Visual Studio 2008 と Visual Studio Tools for Office を使用する必要があります。 |
public void ShowDialog_OnClick(DocActionEvent e)
{
// Instantiate and show Form1.
Form1 myform = new Form1();
myform.Show();
}
Public Sub ShowDialog_OnClick(ByVal e As DocActionEvent)
' Instantiate and show Form1.
Dim MyForm As New Form1()
MyForm.Show()
End Sub
Visual C# と Visual Basic のサンプルは両方とも、InfoPath フォームの [ShowDialog] ボタンのイベント ハンドラによって呼び出されるダイアログ ボックスを定義する、"Form1" と名付けられた Windows フォームに依存します。Form1 を InfoPath プロジェクトに追加するには、以下の手順を使用します。
Windows フォームを InfoPath プロジェクトに追加する
[ソリューション エクスプローラ] でフォーム コード プロジェクト (projectnameFormCode) を右クリックし、[追加] をポイントして、[Windows フォームの追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、フォームに名前を付け、[開く] をクリックします。
[ツールボックス] から [ボタン] コントロールをフォーム上にドラッグします。
ボタンをダブルクリックし、以下のコードをボタンのイベント ハンドラに追加します。
// Close the form.
this.Close();
' Close the form.
Me.Close()