スクリプトでカスタムダイアログ三択確認を実装
FileMakerで業務システムを作っていると、「処理を実行する前に、ユーザーに選択肢を出して確認したい」という場面がよくあります。
「はい / いいえ」の二択だけでは足りず、「保存して閉じる / 保存せず閉じる / キャンセル」のように三択にしたいことも多いはずです。
しかし、標準のダイアログではボタンが2つまでしか設定できず、「三択の確認ダイアログをどう作ればいいの?」と悩むことがあります。
この記事では、FileMakerのカスタムダイアログとスクリプトを使って、三択の確認画面を実装する方法を、できるだけ専門用語を使わずに解説します。
三択確認を作りたい典型的なケース
三択確認が必要になるのは、例えば次のような場面です。
- レコードを編集した後にウィンドウを閉じるとき
- 「保存して閉じる」
- 「保存せず閉じる」
- 「キャンセル(閉じない)」
- 一括削除や一括更新など、取り消しにくい処理を実行する前
- ユーザーの権限によって、次に進む処理を選ばせたいとき
こうした場面で、ボタンが2つしかないと、どうしても無理やりなメッセージになってしまいます。
そこで、カスタムダイアログのボタンを3つ用意し、スクリプト内で分岐させるのがシンプルで分かりやすい解決策です。
カスタムダイアログ三択の基本的な考え方
FileMakerには「カスタムダイアログを表示」というスクリプトステップがあり、ここで最大3つまでボタンを設定できます。
ポイントは次の2つです。
- ボタン1〜3に、それぞれ分かりやすいラベルをつける
- ユーザーがどのボタンを押したかを、
Get ( 最後にメッセージに応答したボタン )関数で判定する
この関数は、押されたボタンの番号(1 / 2 / 3)を返してくれるので、その番号に応じて「もし〜なら」「それ以外なら」と分岐させていきます。
具体的なスクリプト構成の例
ここでは例として、編集画面を閉じるときに次の三択を出すスクリプトを考えます。
- ボタン1:保存して閉じる
- ボタン2:保存せず閉じる
- ボタン3:キャンセル
スクリプトの流れは、ざっくり次のようになります。
- カスタムダイアログを表示(ボタンを3つ設定)
Get ( 最後にメッセージに応答したボタン )の結果を変数に入れる- その変数を If ステップで分岐して、それぞれの処理を実行
FileMakerのスクリプト風に書くと、次のようなイメージです(あくまでイメージなので、環境に合わせて調整してください)。
// 1. カスタムダイアログを表示
カスタムダイアログを表示 [ タイトル: "確認"; メッセージ: "変更をどうしますか?";
ボタン1: "保存して閉じる"; ボタン2: "保存せず閉じる"; ボタン3: "キャンセル" ]
// 2. 押されたボタンを変数に格納
変数を設定 [ $button ; 値: Get ( 最後にメッセージに応答したボタン ) ]
// 3. ボタンごとに分岐
If [ $button = 1 ]
# 保存して閉じる
コミットレコード/リクエスト [ ダイアログなし ]
ウィンドウを閉じる
Else If [ $button = 2 ]
# 保存せず閉じる(変更を破棄したい場合は取り消し処理などを実装)
レコード/検索条件の再取得
ウィンドウを閉じる
Else If [ $button = 3 ]
# キャンセル(何もしないで終了)
退出スクリプト []
End If
このように、「押されたボタンの番号」を中心に処理を組み立てるのがポイントです。
ユーザーに分かりやすくするための工夫
三択ダイアログは便利な反面、ユーザーにとっては選択肢が増えるため、迷いやすくなります。
使いやすくするために、次のような工夫をおすすめします。
- ボタンの順番を意識する
一般的には、「安全な選択肢」ほど左側に置くと、誤操作が減ります。
例:
1. キャンセル
2. 保存せず閉じる
3. 保存して閉じる
といった並びも状況によっては有効です。 - メッセージを具体的に書く
「どうしますか?」だけではなく、「この画面での変更をどうしますか?」など、対象をはっきり書くと迷いにくくなります。 - 重要な処理には一言注意書きを入れる
「保存せず閉じる(変更は元に戻せません)」のように、結果を具体的に示すと誤操作防止になります。
実務で使うときの注意点
実際の業務システムに組み込むときは、次の点も意識しておくと安心です。
- スクリプトの途中に組み込む場合
三択ダイアログのあとに続く処理があるときは、「キャンセル」を選んだ場合に確実にスクリプトを終了するようにしておきましょう。
例:If [ $button = 3 ] ; 退出スクリプト [] ; End Ifのように早めに抜ける方法があります。 - レイアウトをまたぐスクリプトとの組み合わせ
画面遷移の前に三択確認を入れる場合、実行中のスクリプトがどのレイアウト上の処理なのかを意識して、コミットや取り消しなどの位置を整理しておくとトラブルが減ります。 - テストは必ずボタンごとに
三つのボタンすべてについて、想定どおりの動きになっているかを一度ずつ確認してから運用を開始しましょう。
このように、FileMakerのカスタムダイアログとスクリプトを組み合わせれば、三択の確認ダイアログは比較的簡単に実装できます。
標準の二択だけで無理やり表現していた処理を整理することで、ユーザーにとっても開発者にとっても分かりやすい画面に改善できます。