簡易コモンダイアログで終了確認ダイアログを作成する

<< Click to Display Table of Contents >>

マニュアル > 画面作成ガイド > フォームとダイアログ/フレーム/ビュー > コモンダイアログ > 簡易コモンダイアログ >

簡易コモンダイアログで終了確認ダイアログを作成する

概要

簡易コモンダイアログを表示する場面では、例えば、はい/いいえの確認など、オペレータに対して何らかの確認を促す場面が多くあります。また、カレンダー選択やパスワードチェックなどのように、簡易コモンダイアログに対して何らかの入力が行われることもあります。これらの対話型の簡易コモンダイアログでは、ダイアログの呼び出し元の後続処理のために、何らかの方法で簡易コモンダイアログの処理結果を受け取る必要があります。

 

ダイアログ側の処理結果は、OnCommonEventというイベントを介して受け取ることができます。ここでは、簡易コモンダイアログの「OpenYesNoMsg」を使った終了確認画面の表示方法を例に、簡易コモンダイアログの使用方法及びOnCommonEventによる処理結果の授受について説明します。

 

hint

OnCommonEventのパラメータで受け取ることができる情報は簡易コモンダイアログの種類により異なります。詳細はコントロールリファレンスの共通メソッドの「簡易コモンダイアログ」の各記述を参照して下さい。

 

 

簡易コモンダイアログで終了確認ダイアログを作成する

簡易コモンダイアログの「OpenYesNoMsg」を使用した、システム終了確認ダイアログの作成例です。

 

(終了確認ダイアログ)

fap_dialog_0062

 

この例では、フォームにボタンコントロールを追加し、ボタンをクリックしたときに終了確認ダイアログ(Yes/No)を表示するようにします。

Yesの場合はそのままPanel Browserを終了し、Noの場合は処理をキャンセルします。

 

 

1.ボタンコントロールをフォームに貼り付ける。
 
tra_0439
 

2.ボタンにOnMouseUpイベントを追加する。
 
ボタンオブジェクトを選択し、スクリプトタブをクリックしてスクリプトエディタを表示します。
 
tra_0440
 
tra_0441
 

 

スクリプトエディタの左上のイベントコンボボックスから「OnMouseUp(button)」を選択します。

 

tra_0442
 

 
スクリプトエディタにOnMouseUpのイベントが追加されました。処理内容の記述は中括弧“{”“}”で囲まれた範囲内に行います。
 
tra_0443
 

 

 

3.ボタンのイベント処理を記述する。
 
ボタンのOnMouseUpイベントに、以下の処理を記述します。
 
tra_0444
 
 
記述する内容は以下の3行です。
 

   if( button == 1 ){
       ::OpenYesNoMsg(this, "終了しますか?");
   }

 
上記で記述されている「button == 1」とは、マウスの左ボタンがクリックされたかどうかを判定しています。OnMouseUpイベントの「button」には、イベント発生時にマウスのどのボタンがマウスアップ(マウスをクリックして離したか)が渡されます。buttonの値には、マウスの左ボタンの場合「1」、中央ボタンの場合「2」、右ボタンの場合は「3」が入ります。

 

「::OpenYesNoMsg...」の記述が簡易コモンダイアログの呼び出し処理です。

ここで、OpenYesNoMsgダイアログの処理結果は、第一引数で指定したオブジェクトのOnCommonEventイベントに対して通知されます。上記の例では「this」を指定しているため、スクリプトを記述しているオブジェクト自身、つまりボタンオブジェクトのOnCommonEventイベントが呼び出されます。また、第二引数で指定した文字列がダイアログ上にメッセージとして表示されます。

 

hint

OnMouseUpイベントの詳細は、「OnMouseUp」を参照下さい。

 

hint

簡易コモンダイアログの呼び出しメソッド「OpenYesNoMsg」の詳細は、共通メソッド「OpenYesNoMsg」を参照下さい。

 

 

4.Yesが押された時の処理を記述する。
 
スクリプトエディタの左上のイベントコンボボックスから「OnCommonEvent(name, value)」を選択します。
 
tra_0445
 
 
すると、スクリプトエディタにOnCommonEventのイベントが追加されました。
 
tra_0446
 
 
ボタンのOnCommonEventイベントに、以下の処理を記述します。
 
tra_0447
 
 
記述する内容は以下の3行です。
 

   if( value == T ){
       ::CloseBrowser();
   }

 
上記の処理は、「value == T」という条件が成立した場合に、「::CloseBrowser()」を処理する、という意味です。
 
尚、OnCommonEventは簡易コモンダイアログのYes/Noのボタンが押された際に呼び出される仕組みとなっています。イベントが呼び出された際に、Yes/Noのどちらが押されたのかが、value変数にTRUE/FALSEとして入ってきます。つまり、「value == T」(TはTRUEの略)は、簡易コモンダイアログでYesボタンが押された場合という条件式となります。
 
また、「::CloseBrowser()」は、Panel Browserを終了するというルートメソッドです。
 

 

5.コモンダイアログを閉じる処理を記述する。
 
コモンダイアログを表示したままの状態で呼び出し元の画面が他に切り替わると、コモンダイアログのみが表示された状態で残されてしまいます。そこで、コモンダイアログを使う場合には、ダイアログを呼び出したボタンが破棄されるタイミングのイベント(OnTerminate)に、ダイアログ自身を閉じる処理を必ず記述するようにします。
 
そこで、ボタンに「OnTerminate」イベントを追加して、コモンダイアログを閉じる処理を記述します。
 
まず、スクリプトエディタの左上のイベントコンボボックスから「OnTerminate()」を選択します。
 
tra_0448
 
 
すると、スクリプトエディタにOnTerminateのイベントに対するスクリプトが追加されました。
 
tra_0449
 
 
ボタンのOnTerminateイベントに、以下の処理を記述します。
 
tra_0450
 
 
記述する内容は以下の1行です。
 

   ::CloseYesNoMsg();

 
上記の「::CloseYesNoMsg()」とは、簡易コモンダイアログ「YesNoMsg」を閉じるための処理です。

 

以上でイベントの記述は完了です。
 

 

上記の処理により、ボタンをクリックすると以下の確認ダイアログが表示されます。

 

fap_dialog_0062

 

「No」ボタンをクリックすると、ダイアログが閉じるだけで何も起きません。

「Yes」ボタンをクリックすると、Panel Browserが終了します。

 

 

attention

コモンダイアログを閉じる前に、targetで指定したオブジェクト(OpenYesNoMsgメソッドの第一引数で指定したオブジェクト)が含まれるフォームを閉じないで下さい。もし閉じられる可能性がある場合は、そのオブジェクトのOnTerminateイベントでコモンダイアログを閉じるようにしてください。この処理によって、targetが含まれるフォームが閉じたときにコモンダイアログも自動的に閉じられます。このような処理が実装されていない場合、親フォームを閉じたあとにコモンダイアログが閉じられると、targetのオブジェクトが存在しないためにアプリケーションエラーが発生する場合があります