フォームをダイアログ表示する

<< Click to Display Table of Contents >>

マニュアル > 画面作成ガイド > フォームとダイアログ/フレーム/ビュー > ユーザダイアログ > ユーザーダイアログの作成例 >

フォームをダイアログ表示する

概要

フォームをユーザーダイアログとして表示するには、共通メソッドの「OpenDialog」または「OpenModalDialog」を用います。

ダイアログを閉じる際には、共通メソッドの「CloseDialog」を使用します。

 

 

hint

OpenModalDialogメソッドを呼び出すと、フォームをモーダルダイアログ表示(最前面表示)として呼び出すことができます。その他、通常のダイアログとして表示した後でモーダルに切り替える事もできます。ダイアログのモーダル表示に関する詳細は「ユーザーダイアログのモーダル表示」を参照してください。

 

 

 

フォームのダイアログ表示の実装例

ここでは、フォームをダイアログとして表示するための最もシンプルな実装例を説明します。

 

(対象サンプル:e.g.1)

ダイアログの呼び出し元フォーム:Form01

ダイアログとして表示するフォーム:Form02

 

(処理内容)

Form01にダイアログ呼び出しのためのボタンコントロールを1つ配置する。ボタンのOnMouseUpイベントからOpenDialogメソッドを呼び出してForm02をダイアログ表示する。

Form02に自身のダイアログを閉じるためのボタンコントロールを1つ配置する。ボタンのOnMouseUpイベントからCloseDialogメソッド呼び出してダイアログ自身を閉じる。

 

 

■Form01の実装

 

ボタンを1つ配置します。

 

ボタンのOnMouseUpイベントに、Form02をダイアログとして呼び出すための処理を記述します(OpenDialogメソッド)。

event OnMouseUp(button)
{
	::OpenDialog("Form02");
}

 

 

■Form02の実装

 

ボタンを1つ配置します。ここでは例として、ボタンのTextプロパティを「OK」としておきます。又、表示されたダイアログが目的のフォームである事が識別できるように、Form02の中央にラベルを1つ配置しておきます。

 

ボタンのOnMouseUpイベントに、ダイアログを閉じるための処理を記述します(CloseDialogメソッド)。詳細は本ページ文末のヒントを参照してください。

event OnMouseUp(button)
{
	::CloseDialog(parent.GetDialogName());
}

 

 

■動作確認

 

Panel Browserを実行し、Form01のボタンをクリックします。するとForm02がダイアログとして表示されます。

 

fap_dialog_0054

 

ダイアログのボタンをクリックすると、ダイアログが閉じます。

 

fap_dialog_0043

 

 

hint

CloseDialogメソッドでダイアログを閉じる際には、ダイアログのビュー名を引数に指定します。ビュー名はダイアログの呼び出し方により変わる可能性があるため、フォームのGetDialogNameメソッドによって取得するようにします。

 

例えば、以下の処理例は、ダイアログのフォーム上に配置されたボタンのOnMouseUpによりダイアログを閉じる処理です。ボタンから見たparent(すなわち、ボタンが張り付けられているフォーム)のGetDialogNameメソッドによって取得したビュー名を、CloseDialogにそのまま渡しています。

event OnMouseUp(button)
{
	::CloseDialog(parent.GetDialogName());
}

 

ビュー名に関する詳細については「フォーム名とビュー名について」に記述されています。

 

hint

OpenDialogは共通メソッドとして提供されます。OpenDialogを呼び出す際には、どのオブジェクトのメソッドとして呼び出すのかにより、振る舞いが変わります。

 

例えば、上記の例では「::OpenDialog()」としてrootのメソッドとして呼び出していますが、以下のように「this.OpenDialog()」とする事で自オブジェクトのメソッドとして呼び出すこともできます。

event OnMouseUp(button)
{
	this.OpenDialog("Form02");
}

 

上記がボタンオブジェクトのOnMouseUpの場合、呼び出されたダイアログは当該ボタンの下に隠れない動作となります。この特性は、複数のダイアログを表示する際に各ダイアログの表示階層を意識する必要がある場合(例えば、表示元の画面の下に隠れないようにしたい場合)などに特に有効です。ダイアログの階層に関する動作については、「ユーザーダイアログの階層」を参照してください。