# コモンダイアログの利用

トレーニング > 応用編 > 共通ダイアログ > # コモンダイアログの利用 |

設備の運転操作やシステムの終了操作など、操作を受け付ける画面を作成する際には、誤操作に対する安全対策が考慮された作りにしておく必要があります。例えば、誤ってマウスボタンに触れてボタンクリックが発生してしまった場合などです。このような場面では、「本当によろいしですか？（Yes／No）」といった確認画面を表示して二段階の操作手順にすることで、うっかりミスによる設備の誤作動を防ぐことができます。

FA-Panelでは確認画面（ダイアログ）を自由に表示することが可能で、Yes／No、Yes／No／Cancelといった定型的なパターンがいくつか用意されています。これらのダイアログのことを、「コモンダイアログ」と呼びます。本節では、コモンダイアログを使った終了確認画面の表示方法を例に、コモンダイアログの使用方法について学習します。

今回は、クライアントのみの処理となる為、新規にクライアントを作成して動作を確認します。

1.Panel Editorを起動し、「新規プロジェクト作成」をクリックします。右エリアから「新規クライアント」を選択し、「作成」ボタンをクリックします。確認画面が表示されるので、「はい」を選択します。

2.「Form01」というフォームが一つ入った状態で起動します。ここで、設定ファイルを「ファイルー名前を付けて保存」からファイル名を指定して保存します。

終了確認画面の作成

フォームにボタンコントロールを追加し、ボタンをクリックしたときに終了確認ダイアログ（Yes/No）を表示するようにしてみます。Yesの場合はそのままFA-Panelを終了し、Noの場合は処理をキャンセルします。

1.終了ボタンを作成します。ボタンコントロールを一つフォームに貼り付けます。
ボタンコントロールを貼り付けたら、以下のプロパティを編集します。
・Textを“終了”に変更

2.終了ボタンのマウスアップイベントの記述を行います。ボタンオブジェクトを選択し、スクリプトタブをクリックしてスクリプトエディタを表示します。

3.ボタンオブジェクトをマウスアップ（マウスをクリックして、離したタイミング）で発生するイベント処理を記述します。
スクリプトエディタの左上のイベントコンボボックスから「OnMouseUp(button)」を選択します。
スクリプトエディタにOnMouseUpのイベントに対するスクリプトが追加されました。処理内容の記述は中括弧“｛”“｝”で囲まれた範囲内に行います。現状、何の処理も記述されていません。
終了ボタンのOnMouseUpイベントに、以下の処理を記述します。
記述する内容は以下の3文になります。行頭の、コロン“：”２文字と、末尾のセミコロン“；”を忘れない様に記述します。

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

ここで、1行目と3行目はif(条件式){...}という分岐書式で、もし条件式が成立すれば{}の中の処理を実行するという意味です。また、条件式の「button == 1」はイベントの記述で、

event OnMouseUp(button)
と記述のあるbuttonを判定しています。button にはイベント発生時にマウスのどのボタンがマウスアップ（マウスをクリックして、離したタイミング）されたかが入ってきます。マウスの左ボタンの場合「1」、中央ボタンの場合「2」、右ボタンの場合は「3」がbutton変数に入ってイベントが発生します。

つまり、ここの条件式は「マウスの左ボタン」のマウスアップの場合は処理を行うという意味になります。そして、処理に当たる部分が「::OpenYesNoMsg...」の記述になります。この記述がコモンダイアログの呼び出し処理になります。この呼び出し処理で指定した文字列がコモンダイアログで表示される文言となります。

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

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

4.コモンダイアログ（Yes/Noの確認ダイアログ）でYesが押された時の処理を記述します。
スクリプトエディタの左上のイベントコンボボックスから「OnCommonEvent(name, value)」を選択します。
スクリプトエディタにOnCommonEventのイベントに対するスクリプトが追加されました。処理内容の記述は中括弧“｛”“｝”で囲まれた範囲内に行います。現状、何の処理も記述されていません。
終了ボタンのOnCommonEventイベントに、以下の処理を記述します。
記述する内容は以下の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のイベントに対するスクリプトが追加されました。処理内容の記述は中括弧“｛”“｝”で囲まれた範囲内に行います。現状、何の処理も記述されていません。
終了ボタンのOnTerminateイベントに、以下の処理を記述します。
記述する内容は以下の1文になります。行頭の、コロン“：”２文字と、末尾のセミコロン“；”を忘れない様に記述します。

::CloseYesNoMsg();

上記の「::CloseYesNoMsg()」とは、コモンダイアログを閉じるという処理になります。

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

動作確認

1.Panel Editorの下図のアイコンをクリックすると、Panel Browserが起動し、クライアント設定ファイルが開かれて実行されます。
先ほど作成した終了ボタンをクリックしてください。
画面の中央に確認ダイアログが表示されました。
先ずは“No”ボタンをクリックしてみてください。すると、ダイアログが閉じるだけで何も起きません。もう一度確認ダイアログを表示して、今度は“Yes”ボタンをクリックしてください。うまくPanel Browserが終了すればOKです。

| コモンダイアログは、OpenYesNoMsg意外に以下のものがあります。各詳細は、コントロールリファレンスを参照して下さい。 •OpenMsg •OpenYesNoCancelMsg •OpenPassword •OpenNumKey •OpenNumKeyEdit •OpenTextKey •OpenTextKeyEdit •OpenCalendar •OpenFormMap •OpenCommonDialog •OpenWindowsDialog