D.R.Y.なコピースクリプト
変更されたくないので 表示用の計算フィールドにしたりマージフィールドで代用したり…ただ、そのフィールドの値をコピーだけはしたい…というニーズは結構ある。
どうということもない…とそれ用のスクリプトを作るわけだが、そのフィールドの数だけ作るのはアフォみたい。
そこで使い回せる D.R.Y. なコピースクリプト。
FileMaker Magazine の Using Utility Scripts で配布しているサンプルファイルがわかりやすい。
(subscribers only のようなので詳しい陳述は避けて以下理屈だけざっくり説明する)
スクリプト引数は…
GetFieldName ( フィールド名 )
を割り当て、どのフィールドが対象なのかを指定するわけだ。
スクリプト自体やっていることは…
スクリプト引数でパスされたフィールド名からフィールド内容を引っ張り出して GetField でグローバル格納のテキストフィールドにフィールド設定している。
そのうえで、そのグローバル格納のテキストフィールド をコピーしている。[注]
最後のスクリプトステップは [フィールドへ移動]で、フィールド指定無しである。
これはどこかのフィールドに入った後に、フォーカスをはずす定石ね。
[注] コピーのスクリプトステップはコピーされるフィールドが当該レイアウトに存在する必要がある。(ただし普段はじゃまにならないように)、[次の場合にオブジェクトを隠す] で True を指定しておくという手が使える。
これで、スクリプト引数に GetFieldName を使ってフィールド名を渡してやることで、
コピースクリプトを D.R.Y. に使い回せる。
「編集(変更)させたくないけどコピーはさせたい」というニーズに対するもうひとつの解は、当該フィールドの OnObjectModify あたりに…
レコード/検索条件復帰 [ ダイアログあり: オフ ]
のスクリプトを割り当てることだろう。
振る舞いは、前者(フィールド値をコピーする汎用スクリプト)と、後者では少し異なる。後者はフィールド値の一部をコピーすることもできるが、選択してコピーと2手間かかるのに対し、前者はワンクリックでフィールド値全体がコピーできる。
0コメント