nomfjmtFileMaker13のスクリプトトリガスクリプトトリガについて調べていて、自分の理解が一気に深まった図を紹介します。Kosによるブログ記事です。13用に更新しました。(ほとんどの内容は元のままです。)FileMakerのスクリプトトリガには、微妙な動作の違いが少なからずあります。その中で、比較的わかりやすい2点が、スクリプトトリガが評価される順序(例:OnObjectKeystrokeはOnLayoutKeystrokeの前に起動される、など)と、元のイベントに対するスクリプトの実行タイミング(例:イベントの前に実行されるか後に実行されるか)です。私にとっては、これらを理解することよりも、暗記することの方が難しく、何度も資料を参照しなおしていました。そこで、これらを覚えやすくするために図を作成しました。皆様の役にも立つといいのですが。解説をすると...トリガが起動される順序には法則があります。インタフェース要素に入るときに、次の順番で発生します。ファイル、ウインドウ、レイアウト、モード、ビュー、レコード、オブジェクト次にレイアウト上のオブジェクトとのやりとりです。ユーザが文字をタイプする、スクリプトがフィールドをアクティブにする、など。これらのスクリプトトリガはそれぞれ特定のオブジェクトに対応します。OnLayoutKeystroke)「やりとり」はインタフェース要素を抜けることで終了しますが、そのときにトリガが逆順で発生します。オブジェクト、レコード、ビュー、モード、レイアウト、ウインドウ、ファイル図では、イベントの後に発生するアクションを、「注意」の意味で赤で示しています(「注意」と言ったのは、FileMakerはこれらのトリガイベントの取り消しを許可しないからです)。トリガが変更されています。Proでウインドウがリサイズされたとき(ステータスツールバーの表示/非表示の切り替えの結果としてのウインドウサイズの変更も含まれる)にも起動されます。ボタンをタップしたときや、フィールドに入るためにタップしたときも起動されることに注意してください。新機能のスライドコントロールに対応するためにOnTabSwitchが置き換えられました。(OnPanelSwitchトリガから見れば、スライドパネルはタブパネルと同種です。起動順の変更にも注意してください。(OnTabSwitchは以前はOnLayoutKeystrokeの後で起動されましたが、変更されました。PDFリファレンスとテストファイル[2015年5月更新]FileMaker14のスクリプトトリガの詳細について、こちらを参照してください。スクリプトトリガのチートシートとデモファイルはこちらから。Frankのブログ記事で紹介されました。)一見、スクリプトトリガはわかりやすそうですが、それぞれに微妙な動作の違いや、見落としがちな注意点があります。Wimのわかりやすく色分けされたPDFリファレンスには、これらの小さな注意点が記述されています。非アクティブなフィールドにデータをドラッグ&ドロップした場合、そのフィールドは内容が変更されるにも関わらずOnObjectModifyトリガが起動しないことを知っていましたか?テストファイルでは、各トリガの起動順と振る舞いを確認できます。Pro、Go、ウェブブラウザ(WebDirect経由)で開いて、クライアントの違いによって動きがどう変わるかを確認してください。レイアウトには全種類のオプジェクトを配置しているので、すべての動作を確認できます。すべての可能性のあるイベントを設定してあるので、このツールを使えば複数のアクションによってどのようなイベントがどのような順序で発生するかを実際に確認することができます。例:フィールド間の移動、レコード間の移動、タブやパネルの切り替え、ポップオーバーを開く、など。