<< Click to Display Table of Contents >> マニュアル > 画面作成ガイド > フォームとダイアログ/フレーム/ビュー > コモンダイアログ > 拡張コモンダイアログ > 拡張コモンダイアログで終了確認ダイアログを作成する |
概要
Yes/Noボタンを持つメッセージボックスなどの拡張コモンダイアログから処理結果を受け取るには、OnCommonEventというイベントを介して受け取ります。ここでは、拡張コモンダイアログの「_sysYesNoMsg」を使った終了確認画面の表示方法を例に、拡張コモンダイアログの使用方法及びOnCommonEventによる処理結果の授受について説明します。
OnCommonEventのパラメータで受け取ることができる情報はコモンダイアログの種類により異なります。詳細は「拡張コモンダイアログリファレンス」を参照してください。 |
拡張コモンダイアログで終了確認ダイアログを作成する
拡張コモンダイアログの「_sysYesNoMsg」を使用した、システム終了確認ダイアログの作成例です。
(終了確認ダイアログ)
この例では、フォームにボタンコントロールを追加し、ボタンをクリックしたときに終了確認ダイアログ(Yes/No)を表示するようにします。
Yesの場合はそのままPanel Browserを終了し、Noの場合は処理をキャンセルします。
1.ボタンコントロールをフォームに貼り付ける。
2.ボタンにOnMouseUpイベントを追加する。
ボタンオブジェクトを選択し、スクリプトタブをクリックしてスクリプトエディタを表示します。
スクリプトエディタの左上のイベントコンボボックスから「OnMouseUp(button)」を選択します。
スクリプトエディタにOnMouseUpのイベントが追加されました。処理内容の記述は中括弧“{”“}”で囲まれた範囲内に行います。
3.ボタンのイベント処理を記述する。
ボタンのOnMouseUpイベントに、以下の処理を記述します。
記述する内容は以下のとおりす。
if( button == 1 ) { this.OpenDialog("_sysYesNoMsg", "",c( "Text:終了しますか?","Target:" & ::CStr(this))); } |
上記で記述されている「button == 1」とは、マウスの左ボタンがクリックされたかどうかを判定しています。OnMouseUpイベントの「button」には、イベント発生時にマウスのどのボタンがマウスアップ(マウスをクリックして離したか)が渡されます。buttonの値には、マウスの左ボタンの場合「1」、中央ボタンの場合「2」、右ボタンの場合は「3」が入ります。
第一引数に、今回表示する拡張コモンダイアログのフォーム名 "_sysYesNoMsg"を指定しています。
第二引数のシステムパラメータは、今回は特に使用しないため""として省略しています。
第三引数には、拡張コモンダイアログに対するオープンパラメータを配列で設定しています。ここでは、メッセージとして表示する文字列"Text"の指定と、ダイアログの処理結果を受け取るオブジェクト"Target"に「this」を設定しています。
OnMouseUpイベントの詳細は、「OnMouseUp」を参照下さい。 |
4.Yesが押された時の処理を記述する。
スクリプトエディタの左上のイベントコンボボックスから「OnCommonEvent(name, value)」を選択します。
すると、スクリプトエディタにOnCommonEventのイベントが追加されました。
終了ボタンのOnCommonEventイベントに、以下の処理を記述します。
記述する内容は以下の3行です。
if( value == T ){ |
上記の処理は、「value == T」という条件が成立した場合に、「::CloseBrowser()」を処理する、という意味です。
尚、OnCommonEventは拡張コモンダイアログのYes/Noのボタンが押された際に呼び出される仕組みとなっています。イベントが呼び出された際に、Yes/Noのどちらが押されたのかが、value変数にTRUE/FALSEとして入ってきます。つまり、「value == T」(TはTRUEの略)は、拡張コモンダイアログでYesボタンが押された場合という条件式となります。
また、「::CloseBrowser()」は、Panel Browserを終了するというルートメソッドです。
5.コモンダイアログを閉じる処理を記述する。
コモンダイアログを表示したままの状態で呼び出し元の画面が他に切り替わると、コモンダイアログのみが表示された状態で残されてしまいます。そこで、コモンダイアログを使う場合には、ダイアログを呼び出したボタンが破棄されるタイミングのイベント(OnTerminate)に、ダイアログ自身を閉じる処理を必ず記述するようにします。
そこで、ボタンに「OnTerminate」イベントを追加して、コモンダイアログを閉じる処理を記述します。
まず、スクリプトエディタの左上のイベントコンボボックスから「OnTerminate()」を選択します。
すると、スクリプトエディタにOnTerminateのイベントに対するスクリプトが追加されました。
ボタンのOnTerminateイベントに、以下の処理を記述します。
記述する内容は以下の1行です。
::CloseDialog("_sysYesNoMsg"); |
上記の「::CloseDialog()」は、ダイアログを閉じるためのメソッドです。メソッドの引数に、ダイアログのビュー名を指定します。
以上でイベントの記述は完了です。
上記の処理により、終了ボタンをクリックすると以下の確認ダイアログが表示されます。
「No」ボタンをクリックすると、ダイアログが閉じるだけで何も起きません。
「Yes」ボタンをクリックすると、Panel Browserが終了します。
拡張コモンダイアログを閉じる前に、オープンパラメータ「Target」で指定したオブジェクトが含まれるフォームを閉じないで下さい。もし閉じられる可能性がある場合は、そのオブジェクトのOnTerminateイベントでダイアログを閉じるようにしてください。この処理によって、Targetのオブジェクトが含まれるフォームが閉じたときにダイアログも自動的に閉じられます。このような処理が実装されていない場合、親フォームを閉じたあとにダイアログが閉じられると、Targetのオブジェクトが存在しないためにアプリケーションエラーが発生する場合があります。 |