FileMaker13のスクリプトトリガ

スクリプトトリガについて調べていて、自分の理解が一気に深まった図を紹介します。
SOLIANT CONSULTINGのサイト(http://www.soliantconsulting.com/)の2014/1/27付けのMislav Kosによるブログ記事です。
以下は私の拙訳です。


soliant consulting

FileMaker13のスクリプトトリガ
( Script Triggers in FileMaker 13 )

Mislav Kos
2014/1/27

スクリプトトリガを図で表現する(FileMaker 13対応版)

以前書いた、FileMaker 12のスクリプトトリガが動作するしくみについてのブログ記事をFileMaker 13用に更新しました。
(ほとんどの内容は元のままです。)

FileMakerのスクリプトトリガには、微妙な動作の違いが少なからずあります。その中で、比較的わかりやすい2点が、スクリプトトリガが評価される順序(例:OnObjectKeystrokeはOnLayoutKeystrokeの前に起動される、など)と、元のイベントに対するスクリプトの実行タイミング(例:イベントの前に実行されるか後に実行されるか)です。
私にとっては、これらを理解することよりも、暗記することの方が難しく、何度も資料を参照しなおしていました。そこで、これらを覚えやすくするために図を作成しました。皆様の役にも立つといいのですが。

少し解説をすると…
トリガが起動される順序には法則があります。

  1. まず、インタフェース要素に入るときに、次の順番で発生します。ファイル、ウインドウ、レイアウト、モード、ビュー、レコード、オブジェクト
  2. 次にレイアウト上のオブジェクトとのやりとりです。
    例えば、ユーザが文字をタイプする、スクリプトがフィールドをアクティブにする、など。
    これらのスクリプトトリガはそれぞれ特定のオブジェクトに対応します。(例外はOnLayoutSizeChange, OnGestureTap, OnLayoutKeystroke)
  3. 「やりとり」はインタフェース要素を抜けることで終了しますが、そのときにトリガが逆順で発生します。
    オブジェクト、レコード、ビュー、モード、レイアウト、ウインドウ、ファイル

図では、イベントの後に発生するアクションを、「注意」の意味で赤で示しています(「注意」と言ったのは、FileMakerはこれらのトリガイベントの取り消しを許可しないからです)。

以下、FileMaker 12と13の違いについて:
FileMaker 13では2つの新規のトリガが導入され、1つの既存の トリガが変更されています。

  • OnLayoutSizeChange – 主にiOS向け。ただし、Proでウインドウがリサイズされたとき(ステータスツールバーの表示/非表示の切り替えの結果としてのウインドウサイズの変更も含まれる)にも起動されます。
  • OnGestureTap – iOSのみ。ボタンをタップしたときや、フィールドに入るためにタップしたときも起動されることに注意してください。
  • OnPanelSwitch – 新機能のスライドコントロールに対応するためにOnTabSwitchが置き換えられました。(OnPanelSwitchトリガから見れば、スライドパネルはタブパネルと同種です。) また、起動順の変更にも注意してください。(OnTabSwitchは以前はOnLayoutKeystrokeの後で起動されましたが、変更されました。)

Wim Decorteのスクリプトトリガ PDFリファレンスとテストファイル

[2015年5月更新]FileMaker14のスクリプトトリガの詳細について、こちらを参照してください。スクリプトトリガのチートシートとデモファイルはこちらから。
(この2つのファイルのFileMaker 12対応版は、2012年7月のKevin Frankのブログ記事で紹介されました。)
一見、スクリプトトリガはわかりやすそうですが、それぞれに微妙な動作の違いや、見落としがちな注意点があります。Wimのわかりやすく色分けされたPDFリファレンスには、これらの小さな注意点が記述されています。
例えば、OnLayoutSizeChangeトリガはプレビューモードでは起動されないということは知っていましたか? あるいは、非アクティブなフィールドにデータをドラッグ&ドロップした場合、そのフィールドは内容が変更されるにも関わらずOnObjectModifyトリガが起動しないことを知っていましたか?

テストファイルでは、各トリガの起動順と振る舞いを確認できます。Pro、Go、ウェブブラウザ(WebDirect経由)で開いて、クライアントの違いによって動きがどう変わるかを確認してください。レイアウトには全種類のオプジェクトを配置しているので、すべての動作を確認できます。
すべての可能性のあるイベントを設定してあるので、このツールを使えば複数のアクションによってどのようなイベントがどのような順序で発生するかを実際に確認することができます。例:フィールド間の移動、レコード間の移動、タブやパネルの切り替え、ポップオーバーを開く、など。

Leave a Reply