FileMakerには、様々な動作の間に、「カスタムダイアログを表示」という機能を加えることができます。
うまく活用すると、データベースを利用するユーザーに、より使いやすいものにすることができます。
カスタムダイアログとは
例えば、Wordで文章を作成している途中で途中作業を保存をせずにファイルを閉じようとすると、
このような警告画面が出ます。
「カスタムダイアログ」は、Wordで言うこのような警告を出したり、選択ボタンによってその後の挙動を任意に設定したりすることのできる機能になります。
FileMakerでもレコードを削除しようとすると、標準で以下のようなダイアログが表示されます。
「削除」を選択すれば、対象のレコードが削除されます。「キャンセル」を選択すれば、レコードは削除されません。
レコードの削除は、通常復元することができません。つまり、一度削除してしまったら元に戻すことはできない訳です。
このような取り返しのつかない重要な作業をする際は、ダイアログを表示して警告すると、誤操作の予防に繋がります。
このようなダイアログを作っていく機能が、「カスタムダイアログを表示」になります。
「カスタムダイアログを表示」の作成方法
「カスタムダイアログを表示」は、スクリプトステップに含まれています。
ここでは、レコードを削除する際にオリジナルなダイアログを表示させるような削除ボタンを作成していきます。
「カスタムダイアログを含み、レコードを削除するスクリプト」と「ボタン」を作成して、ボタンを押した時にスクリプトが走るように作成していきます。まずはスクリプトを作成していきます。
スクリプトの作成
作成の流れとしては、
- スクリプトステップのなかに、「カスタムダイアログを表示」ステップを入れ込みます。
- ダイアログに表示されるメッセージをレコードによって変えるようにカスタム作成します。
- 「If関数」と「Get (最終メッセージ選択)関数」を使用して、ダイアログに表示されたボタンの選択によって、その後の挙動を制御します。
まずスクリプトワークスペースを開いて、スクリプトを作成します。スクリプト名は、「カスタムダイアログで削除」とします。
「ステップ」の中の「その他」の項目内に「カスタムダイアログを表示」があります。
上記の「カスタムダイアログを表示」を1番目のステップに設定します。
詳細を設定するために歯車のボタンをクリックします。
以下のような「カスタムダイアログを表示のオプション」が開きます。
上記の①〜④は、ダイアログの下記の部位に相当します。
では、まず「タイトル」を設定していきましょう。
任意のテキストをタイトルに表示させるためには、ダブルクォーテーション(””)の間にテキストを入力します。
“ダイアログのタイトル”
「指定…」を選択することで、計算結果をタイトルに表示できます。
例えば、「Get (ファイル名)」という関数を入れることで、現在のファイル名をタイトルに指定することができます。
このファイルは、「カスタムダイアログ サンプルfmp.12」というファイルです。タイトルに「Get (ファイル名)」を指定すると、以下のように表示されます。
次に、「メッセージ」を指定します。
タイトルと同様に、任意のテキストをタイトルに表示させるためには、ダブルクォーテーション(””)の間にテキストを入力します。
計算結果を表示させたい場合は、「指定…」をクリックします。今回は、選択中の
「氏名フィールド」を削除しますか?
と表示させようと思います。「氏名フィールド」の部分は、選択中の「氏名フィールド値」を表示させます。
メッセージの中に、
カスタムダイアログ::氏名
&
“を削除しますか?”
と入力します。
デフォルトボタンに
“削除”
と入力します。
次のスクリプトステップで、「If」を入れます。
「fx」という部分をクリックします。
表示された計算式の指定画面で、取得関数から「Get ( 最終メッセージ選択 )」を選びます。そこに「=1」を加えます。
Get ( 最終メッセージ選択 ) = 1
次に「If」と「End If」の間に、「レコード/検索条件削除」を入れます。ダイアログはオフにします。
ここまででスクリプトの作成は終了です。
Get ( 最終メッセージ選択 ) = 1 は何を意味しているのかというと、カスタムダイアログのオプションで設定したボタンと関係しています。
Get ( 最終メッセージ選択 ) = 1 は、「デフォルトボタン」の部分が押された時を意味します。
Get ( 最終メッセージ選択 ) = 2 は、「ボタン2」が押された時を意味します。
Get ( 最終メッセージ選択 ) = 3 は、「ボタン3」が押された時を意味します。
今回は、「Get ( 最終メッセージ選択 ) = 1」にしました。したがって、ダイアログに表示された削除ボタンが押された時に、「レコード/検索条件削除」ステップが実行されます。
Get ( 最終メッセージ選択 )が「1」意外であった場合は、「レコード/検索条件削除」は実行されません。
「If」の流れを解説すると、
もし最終メッセージ選択が「1」であれば、レコードを削除しますが、「1」意外であった場合は「レコード/検索条件削除」はスキップされます。
ということになります。すなわち、ボタン2である「キャンセル」をクリックした場合は、Get ( 最終メッセージ選択 ) は「2」になりますので、「レコード/検索条件削除」は実行されません。
ボタンの作成
「ボタン」を作成して先ほど作成したスクリプトステップでメッセージを表示させます。
以下のサンプルファイルでは、「氏名」というフィールドがあり、リスト表示されています。氏名フィールドの横にボタンを作成して、作成したスクリプトを設定します。
レイアウトモードにして、「ボタンツール」を選択し、任意の場所でドラッグアンドドロップしてボタンを配置します。
ボタンの設定で、ゴミ箱のマークをしたボタンを作成します。
処理で、「スクリプトの実行」を選択します。
先ほど作成した「カスタムダイアログで削除」スクリプトを選択します。
これで完成です。
動作確認
では、作成したボタンを押した時に、警告ダイアログが表示されるか確認してみましょう。
以下のようなダイアログが表示されました。
「キャンセル」を選択しても何も起こりませんが、「削除」を選択するとレコードが削除されることを確認します。
「カスタムダイアログを表示」の活用法