[方法] InfoPath 2003 オブジェクト モデルを使用してフォーム ウィンドウを操作する方法
InfoPath フォームをプログラムから操作するときは、フォームのウィンドウにアクセスするコードを記述し、ウィンドウに含まれるアイテムの一部をカスタソイズすることができます。InfoPath 2003 互換のオブジェクト モデルでは、WindowsCollection インターフェイスと WindowObject インターフェイスを関連させて使用することにより、フォームのウィンドウにアクセスできます。
InfoPath には、次の 2 種類のウィンドウがあります。
ユーザーがフォームにデータを入力するときに使用する編集ウィンドウ。
ユーザーがフォーム テンプレートをデザインするときに使用するデザイン ウィンドウ。
フォーム テンプレートのコードを書くときに便利な機能を備えているのは編集ウィンドウです。参照する WindowObject インスタンスを使用して、さまざまなプロパティとメソッドにアクセスし、フォーム編集の操作性をカスタマイズすることができます。
WindowsCollection インターフェイスの概要
WindowsCollection インターフェイスには、次のプロパティがあります。フォーム テンプレートの開発者は、これらのプロパティを使用して、フォーム テンプレートに含まれている WindowObject インスタンスを管理できます。
名前 | 説明 |
---|---|
Count プロパティ |
コレクションに含まれている Window オブジェクトの数を返します。 |
Item プロパティ |
指定した Window オブジェクトへの参照を返します。
メモ :
Visual C# では、Item プロパティを呼び出す代わりに、インデクサを使用してコレクションにアクセスします (たとえば、
thisApplication.Windows[0].Caption )。
|
Window オブジェクトの概要
WindowObject インターフェイスには、次のメソッドとプロパティがあります。フォームの開発者は、これらを使用して InfoPath ウィンドウを操作できます。これらのメソッドとプロパティに対するサポートは、操作しているウィンドウの種類 (XdWindowType) によって異なります。一部のメソッドとプロパティは、編集ウィンドウ (XdWindowType.xdEditorWindow) のみを操作します。残りのメソッドとプロパティは、編集ウィンドウとデザイン ウィンドウ (XdWindowType.xdDesignerWindow) の両方を操作します。さらに、すべての InfoPath オブジェクト モデルのメンバと同様に、フォーム テンプレートから呼び出される場合、メソッドとプロパティに対するサポートは、セキュリティ レベルおよびフォームの展開方法によって異なることがあります。
名前 | 説明 | ウィンドウの種類のサポート |
---|---|---|
Activate メソッド |
現在アクティブなウィンドウを指定します。 |
xdDesignWindow および xdEditorWindow |
Active プロパティ |
ウィンドウが現在アクティブなウィンドウかどうかを示す Boolean 値を返します。 |
xdDesignWindow および xdEditorWindow |
Caption プロパティ |
Window オブジェクトによって表されるウィンドウのキャプション テキストを返す、または設定する読み取り/書き込みプロパティ。 |
xdEditorWindow のみ |
Close メソッド |
ウィンドウを閉じます。 |
xdEditorWindow のみ |
CommandBars プロパティ |
Microsoft Office CommandBars オブジェクトへの参照を返します。 |
xdDesignWindow および xdEditorWindow |
Height プロパティ |
Window オブジェクトによって表されるウィンドウのポイント単位での高さを指定する Long 型整数の読み取り/書き込みプロパティ。 |
xdDesignWindow および xdEditorWindow |
Left プロパティ |
Window オブジェクトによって表されるウィンドウのポイント単位での水平方向の位置を指定する Long 型整数の読み取り/書き込みプロパティ。 |
xdDesignWindow および xdEditorWindow |
MailEnvelope プロパティ |
MailEnvelopeObject オブジェクトへの参照を返します。 |
xdEditorWindow のみ |
TaskPanes プロパティ |
TaskPanesCollection コレクションへの参照を返します。 |
xdDesignWindow および xdEditorWindow |
Top プロパティ |
Window オブジェクトによって表されるウィンドウのポイント単位での垂直方向の位置を指定する Long 型整数の読み取り/書き込みプロパティ。 |
xdDesignWindow および xdEditorWindow |
WindowType プロパティ |
XdWindowType 列挙に基づいて、ウィンドウの種類を表す数値を返します。 |
xdDesignWindow および xdEditorWindow |
Width プロパティ |
Window オブジェクトによって表されるウィンドウのポイント単位での幅を指定する Long 型整数の読み取り/書き込みプロパティ。 |
xdDesignWindow および xdEditorWindow |
WindowState プロパティ |
Window オブジェクトによって表されるウィンドウの状態を返す、または設定する XdWindowState 型の読み取り/書き込みプロパティ。 |
xdDesignWindow および xdEditorWindow |
XDocument プロパティ |
ウィンドウに関連付けられている _XDocument オブジェクトへの参照を返します。 |
xdEditorWindow のみ |
WindowsCollection インターフェイスおよび Window インターフェイスを使用する
WindowsCollection インターフェイスには、Application インターフェイスの Windows プロパティを通じてアクセスできます。WindowsCollection インターフェイスを使用してフォームのウィンドウにアクセスするときは、インデクサを使用するか (Visual C# の場合)、Item プロパティに Long 型整数を渡して (Visual Basic の場合)、WindowObject インターフェイス インスタンスへの参照を返します。たとえば、次のコードは、WindowsCollection に含まれる最初の WindowObject への参照を設定します。
WindowObject objWindow = thisApplication.Windows[0];
Dim objWindow As WindowObject = thisApplication.Windows(0)
ただし、次のコードに示すとおり、Application インターフェイスの ActiveWindow プロパティを使用すると、 WindowsCollection を介することなく、現在開いているウィンドウに直接アクセスできます。
WindowObject objWindow = thisApplication.ActiveWindow;
Dim objWindow As WindowObject = thisApplication.ActiveWindow
メモ : |
---|
InfoPath マネージ コード プロジェクトをデバッグするときは、デバッグ ウィンドウがアクティブなので、ActiveWindow プロパティは常に null を返します。 |
WindowObject は、View インターフェイスの Window プロパティを使用してアクセスすることもできます。このインターフェイスは、フォームの基になる XML ドキュメントに関連付けられています。XDocument インターフェイスの View プロパティは、View オブジェクトにアクセスするために使用します。たとえば、次のコードは、フォームの基になる XML ドキュメントのビューに関連付けられている WindowObject への参照を設定します。
WindowObject objWindow = thisXDocument.View.Window;
Dim objWindow As WindowObject = thisXDocument.View.Window
メモ : |
---|
Window オブジェクトの一部のプロパティとメソッドは、編集ウィンドウでのみ使用できます。デザイン ウィンドウで使用すると、エラーが発生します。各ウィンドウの種類でサポートされるプロパティとメソッドの一覧については、前に示した表を参照してください。コードで WindowType プロパティを使用すると、現在操作しているウィンドウの種類を確認できます。 |