<< Click to Display Table of Contents >> マニュアル > 画面作成ガイド > フォームとダイアログ/フレーム/ビュー > ユーザダイアログ > ユーザーダイアログの作成例 > ダイアログにパラメータを渡す |
概要
通常のフォームと同様、ダイアログとしてフォームを開く際に「オープンパラメータ」を使用してパラメータを渡すことができます。
オープンパラメータは、共通メソッドの「OpenDialog」や、ルートの「OpenForm」メソッド、「OpenViewForm」メソッドなどのopenParam引数で指定することができます。呼び出されたフォーム側のOnInirtializeイベントなどでフォームの「GetOpenParam」メソッドを呼び出す事で、受け取ったパラメータの値を取り出すことができます。フォームのパラメータを授受する方法の詳細については、フォームの「GetOpenParam」メソッドの解説を参照してください。
ダイアログのオープンパラメータの実装例
ここでは、オープンパラメータを使用してダイアログに対してパラメータを渡す方法を説明します。
(対象サンプル:e.g.2)
•ダイアログの呼び出し元フォーム:Form01
•ダイアログとして表示するフォーム:Form03
(処理内容)
•Form01に、ダイアログ呼び出しのためのボタンコントロールを1つ、パラメータを入力するためのエディットボックスを2つ配置する。ボタンのOnMouseUpイベントにて、両エディットボックスの値をオープンパラメータに指定してOpenDialogメソッドを呼び出し、Form03をダイアログ表示する。
•Form03に、自身のダイアログを閉じるためのボタンコントロールを1つ、演算値を表示するためのラベルを1つ配置する。Form03のOnInitializeイベントにて、オープンパラメータで受け取った各値を加算した結果をラベルに表示する。
■Form01の実装
ボタンを1つ、エディットボックスを2つ配置します。ここでは例として、エディットボックスの名称をEdit1、Edit2とし、TextTypeをNUMBERにしておきます。これにより、各エディットボックスは数値入力のみ可能となります。
ボタンのOnMouseUpイベントに、Form03をダイアログとして呼び出すための処理を記述します(OpenDialogメソッド)。ここでは例として、オープンパラメータの「Param1」としてEdit1.Textの値を、「Param2」としてEdit2.Textの値を含めて渡すように記述します。尚、オープンパラメータはOpenDialogの第3引数で指定します。第2引数(ダイアログパラメータ)は今回は指定しないため、ブランクとしておきます。
event OnMouseUp(button) { var vOpenParam = c("Param1:" & parent.Edit1.Text, "Param2:" & parent.Edit2.Text); ::OpenDialog("Form03","",vOpenParam); }
■Form03の実装
ボタンを1つ、ラベルを1つ配置します。ここでは例として、ラベルの名称をLabel1とし、ボタンのTextプロパティを「OK」としておきます。
Form03のOnInitializeイベントを定義し、GetOpenParamメソッドでオープンパラメータから「Param1」と「Param2」の値を取り出し、両者を加算した結果をLabel1のTextに代入します。
event OnInitialize() { var vParam1 = ::CInt(this.GetOpenParam("Param1")); var vParam2 = ::CInt(this.GetOpenParam("Param2")); this.Label1.Text = vParam1 + vParam2; }
ボタンのOnMouseUpイベントに、ダイアログを閉じるための処理を記述します(CloseDialogメソッド)。ダイアログの終了処理については「フォームをダイアログ表示する」の実装例を参照してください。
event OnMouseUp(button) { ::CloseDialog(parent.GetDialogName()); }
■動作確認
Panel Browserを実行し、Form01を表示します。
Form01のエディットボックスに任意の数値を入力し、ボタンをクリックします。
するとForm03がダイアログとして表示され、上記のエディットボックスで入力した数値の合計がラベルに表示されます。
(表示例)