OnLayoutEnterで画面初期化を自動化しよう
FileMakerで業務用の画面を作っていると、「レイアウトを開いたときに、毎回同じ初期状態にしたい」という場面がよくあります。検索条件をクリアしたい、前回の入力値を消したい、特定のタブを必ず先頭に戻したい、など、人間が手作業でやるとどうしても「うっかり忘れ」が発生します。
こうした「レイアウトを開いた瞬間の初期化」は、スクリプトトリガーの OnLayoutEnter を使うことで、自動化することができます。本稿では、専門用語をできるだけ避けながら、OnLayoutEnterで画面初期化を行う基本的な考え方と、実際の設定方法を紹介します。
OnLayoutEnterとは?どんなときに動くのか
OnLayoutEnterは、FileMakerの「スクリプトトリガー」のひとつで、
- そのレイアウトに「入った直後」にスクリプトを実行する
- レイアウト切り替えのたびに自動で発火する
という特徴があります。
具体的には、次のようなタイミングで動きます。
- ナビゲーションボタンで別レイアウトに移動したとき
- レイアウトメニューから手動で切り替えたとき
- スクリプトステップ「レイアウト切り替え」で移動したとき
つまり、「この画面を開いたら、必ず○○する」という処理を任せるのに最適なタイミングです。
OnLayoutEnterで自動化できる「画面初期化」の例
OnLayoutEnterを使うと、次のような「お作法」を自動化できます。
- 検索用フィールドを空にする
- グローバルフィールド(gフィールド)の値をクリアする
- ポータルのソート順やフィルタを初期状態に戻す
- 特定のタブパネル・スライドパネルを先頭に戻す
- メッセージエリアを非表示にする、フラグをオフにする
- 前回選択していたレコードではなく、必ず1件目を表示する
これらを全部ユーザーの「気をつけ」で運用すると、どうしてもミスが出ますが、OnLayoutEnterでスクリプト化しておけば、画面を開くたびに同じ状態からスタートでき、業務の安定性が上がります。
基本の流れ:OnLayoutEnterでスクリプトを呼び出す
画面初期化を自動化するまでの大まかな手順は、次の3ステップです。
- 「画面初期化用」のスクリプトを作る
- そのスクリプトをレイアウトのOnLayoutEnterトリガーに割り当てる
- 必要に応じて、初期化内容を調整する
1. 画面初期化用スクリプトを作成する
まずは、画面に入ったときに実行したい処理をひとつのスクリプトにまとめます。例として、「検索フィールドをクリアし、タブを先頭に戻す」シンプルなスクリプトイメージを紹介します。
- スクリプト名:レイアウト初期化_顧客一覧
- 内容のイメージ:
- 検索用グローバルフィールド(例:g_検索キーワード)を空にする
- タブパネルの1番目を選択する
- ソートを解除する、または標準ソートをかけ直す
- 表示行を1件目に移動する
実際のスクリプトステップは環境によって異なりますが、考え方としては「ユーザーにやってほしい初期化作業を、全部このスクリプトに集約する」というイメージです。
2. レイアウトにOnLayoutEnterトリガーを設定する
次に、作成したスクリプトを、レイアウトのOnLayoutEnterに紐づけます。操作の流れは次の通りです。
- 「レイアウトモード」に切り替える
- メニューの「レイアウト」から「レイアウト設定」を開く
- 「スクリプトトリガ」タブを選択する
- 「レイアウトに入ったとき(OnLayoutEnter)」の欄で「スクリプトを指定…」をクリック
- 先ほど作成した「レイアウト初期化_顧客一覧」スクリプトを選択してOK
- レイアウト設定を閉じて保存
これで、このレイアウトに入るたびに、必ず「レイアウト初期化_顧客一覧」が自動的に実行されるようになります。
実務でありがちな「ちょっとした工夫」
OnLayoutEnterで画面初期化を行うとき、実務では次のような工夫をしておくと使い勝手がよくなります。
初期化したくないケースを避ける
場合によっては、「このレイアウトに戻るときは初期化しないでほしい」という場面もあります。たとえば、詳細画面から一覧画面に戻ったときに、検索条件を残したいケースです。
その場合は、
- グローバル変数(例:$$スキップ初期化)を一時的にセットする
- OnLayoutEnterのスクリプトの最初で、その変数をチェックする
- 値がセットされているときは、初期化処理を飛ばす
といった簡単な条件分岐を入れておくと、柔軟に制御できます。
ユーザーごとに初期状態を変えたいとき
「管理者だけは別のタブを開く」「営業部だけ別のソート順にする」といった「ユーザーの属性による違い」も、初期化スクリプトの中で制御可能です。
アカウント名や権限セットを条件にして、
- 管理者アカウントのときだけ別タブを選択
- 特定ユーザーだけ違うフィルタを適用
といった分岐を入れれば、「人によって使いやすい初期状態」を自動で用意できます。
OnLayoutEnterを使うときの注意点
便利なOnLayoutEnterですが、設定するときに注意したいポイントもあります。
- 処理を重くしすぎない:レイアウトに入るたびに実行されるため、レコード数の多いソートや集計を毎回走らせると、画面切り替えが遅くなってしまいます。
- ユーザーの操作を邪魔しない:レイアウトに入ってすぐに別のレイアウトへ飛ばす、ダイアログを大量に出す、などは使い勝手を悪くします。
- テスト環境で十分に確認する:開発中にOnLayoutEnterを付けたままにしておくと、思わぬタイミングでスクリプトが動き、原因が分かりにくくなることがあります。内容が固まるまでは、テスト用レイアウトで検証するのがおすすめです。
まとめ:OnLayoutEnterで「毎回同じ状態からスタート」できる環境を
OnLayoutEnterを使って画面初期化を自動化すると、
- ユーザーが毎回同じ操作をしなくてよくなる
- 「前回の状態が残っていてミス」などの事故を防ぎやすい
- 画面の振る舞いが安定し、マニュアルも書きやすくなる
といったメリットがあります。
特別なテクニックがなくても、「初期化用スクリプトをひとつ作る」「それをOnLayoutEnterに割り当てる」という流れさえ押さえれば、誰でも導入できます。まずは、検索画面や一覧画面など、「初期状態が大事なレイアウト」から少しずつ試してみてください。