<< Click to Display Table of Contents >> マニュアル > 画面作成ガイド > フォームとダイアログ/フレーム/ビュー > ユーザダイアログ > ユーザーダイアログの作成例 > スクリプトからダイアログにアクセスする |
概要
ダイアログ画面として表示されたフォームのオブジェクトに対して、呼び出し元フォームから参照したり、値を書き込んだりしたい場合があります。このような場合、オープンパラメータやOnCommonEventなどを介して値の授受を行う方法のほかに、スクリプトから直接アクセスすることもできます。尚、スクリプトから絶対パスでオブジェクトにアクセスする場合、参照されるオブジェクトに名前を付与する必要があります。スクリプトからのオブジェクトの参照に関する詳細については、「オブジェクトの階層構造と参照」の記述を参照してください。
ダイアログのフォームなどのオブジェクトにスクリプトから直接アクセスする場合は、参照先のオブジェクトが存在している必要がある点に十分に注意してください。存在しないオブジェクトにアクセスしようとすると、スクリプトのランタイムエラーが発生します。 |
スクリプトからダイアログにアクセスする実装例
ここでは、ダイアログ表示されたフォームのオブジェクトに、呼び出し元フォームのスクリプトから直接アクセスする方法について説明します。
(対象サンプル:e.g.5)
•ダイアログの呼び出し元フォーム:Form01
•ダイアログとして表示するフォーム:Form06
(処理内容)
•Form01に、ダイアログ呼び出しのためのボタンコントロールを1つ配置する。ボタンのOnMouseUpイベントにて、ダイアログパラメータにビュー名とフォーム名を設定してForm06をダイアログ表示する。フォームの呼出し後、ダイアログパラメータで指定したフォーム名に基づいた絶対パス参照によって、ダイアログのラベルの値を直接書き換える。
•Form06に、自身のダイアログを閉じるためのボタンコントロールを1つ、値表示用にラベルを1つ配置する。上記の絶対パス参照のためにラベルに名前を付与しておく。
■Form01の実装
ボタンを1つ配置します。ボタンのOnMouseUpイベントに、Form06をダイアログとして呼び出すための処理を記述します(OpenDialogメソッド)。ここでは例として、ダイアログパラメータのviewNameに「Dialog3」、formNameに「DlgForm3」としています。これらのパラメータが、ダイアログ表示後のビュー名とフォーム名となります。絶対パスでオブジェクトに参照するにはこのフォーム名を使用します。
OpenDialogによる表示呼び出しの後、表示されたダイアログ上に配置されているラベル「Label1」のTextに、文字列を直接代入します。ここでは例として「ABCDE」という文字列を指定します。尚、ここで参照に用いるフォーム名は、表示元フォームのフォーム名「Form06」ではなく、ダイアログパラメータで渡したフォーム名「DlgForm3」を使用する点に注意してください。
event OnMouseUp(button) { var vDialogParam = c("viewName:Dialog3","formName:DlgForm3"); ::OpenDialog("Form06",vDialogParam); ::DlgForm3.Label1.Text = "ABCDE"; }
■Form06の実装
ボタンを1つ、ラベルを1つ配置し、ラベルの名称を「Label1」としておきます。
ボタンのOnMouseUpイベントにダイアログを閉じるための処理を記述します(CloseDialogメソッド)。ダイアログの終了処理については「フォームをダイアログ表示する」の実装例を参照してください。
event OnMouseUp(button) { ::CloseDialog(parent.GetDialogName()); }
■動作確認
Panel Browserを実行し、Form01を表示します。
ボタンをクリックするとForm06がダイアログ表示されます。ラベルの表示内容が、Form01のボタンのスクリプトによって直接代入された文字列となっている事を確認してください。
スクリプトでは、オブジェクトのプロパティへのアクセスのほか、オブジェクトが持つメソッドの呼出しや、オブジェクトに実装されているユーザー定義関数の呼び出しなどを行うこともできます。 |