カテゴリー
Apple

【FileMaker】レイアウトの入力フィールド値をトリガーとスクリプトで変更する方法

入力フィールドに数字を入力し、フォーカスアウト(次の入力フォームに移るなど)したら数字の左側をゼロ埋めしたいのです!

悩みながらも共通パーツとして使いやすく作れました♪記録に残しておきますの♪

ポイント

  • Get (アクティブフィールド内容 ) で入力フォームの値を引数としてでなくスクリプトで直接取得
  • フィールドを名前で設定 [] で動的にフィールドを指定可能
  • フィールドを指定するには Get (アクティブフィールドテーブル名 ) & "::" & Get (アクティブフィールド名 )

スクリプトのコード

##################################################
# アクティブフィールド文字列の左側を0埋めします。
# (50 + 対象文字列)桁まで対応します。
# 引数: 総桁数
# 戻り値: 0埋めした文字列
##################################################
エラー処理 [オン]
ウインドウの固定

変数を設定 [$input; 値: Get (アクティブフィールド内容 )]
変数を設定 [digits; 値: Get (スクリプト引数 )]

変数を設定 [$formatted: 値: Right ( "00000000000000000000000000000000000000000000000000" & $input ; $digits)]

変数を設定 [$output; 値: Get (アクティブフィールドテーブル名 ) & "::" & Get (アクティブフィールド名 )]
フィールドを名前で設定 [$output; $formatted]
エラー処理 [オフ]

トリガの設定方法

  1. レイアウトの編集 > 対象のフォーム右クリック > スクリプトトリガ設定
  2. イベント OnObjectExit にチェックし、スクリプトに「左0埋め」、オプションのスクリプト引数に総桁数を設定

おわりに

最初、「現在のスクリプト終了」で値をフォームに返せると思っておりましたけれども、できませんでした><。

スクリプトでオカレンステーブルのフィールドを設定してやれば反映できることはわかっておりました。けれどもそれですと設定したいレイアウトのフィールドの数だけコードを書かなければなりません。極めて面倒、極めて保守性が低いですの><。

絶望しておりましたら、「フィールドを名前で設定」で値を反映するフィールドを動的に選べることがわかりました♪感動しましたの!

さらに、「アクティブフィールド内容」で OnObjectExit 時のフィールドの値を取得することができることも知れました!これで引数としてフィールドを渡す必要も無くなりましたの♪これも嬉しかったですわ♪

以上です。

コメントを残す