小ネタ:快適操作ファイルメーカーでメディア管理システムを作る話。それだけのために苦労して仕組みを作ります。オマケ的に、快適操作の一例を挙げてみたいと思います。グローバルフィールド専用ファイル小ネタ:快適操作レイアウトでよく使うボタンとかポップアップメニューについてです。ボタンはボタンを配置してスクリプトを割り当てるだけなので簡単だし便利だし、放っておくとレイアウト中がボタンだらけになります。フィールドさえボタンになったりします。あまりにもボタンだらけなので「もうちょっと何とかならんのか。プルダウンメニューみたいにまとめてポップアップできるとか・・・それやっ」というわけで近年はボタンに割り当てる代わりにポップアップメニューを作っています。ポップアップメニューフィールドの表示スタイルにポップアップメニューあります。普通はフィールドへの入力に使いますね。それとは違って、ボタンの代わりにポップアップを使うのですがそれってどういうこと?こういうことです。https://www.digitalboo.net/blog/wp-content/uploads/2020/01/de7ca01053c7b9990682b2ebb21313df.m4vあるフィールドに値一覧を割り当ててポップアップメニュー表示にして選択したら某かの処理が行われます。ボタンでの処理をメニュー方式にしただけのことです。これが省スペース的にも使い勝手的にも大変よろしいんです。作り方は、メニューを表示するフィールドにスクリプトトリガOnObjectModifyをセットします。材料メニューを表示するフィールド表示する値一覧トリガに仕込むスクリプト実際に動かすスクリプト(必要なら)メニューを表示させるフィールドはグローバル格納です。データベースの大事なデータを入れるフィールドではなくて、ただのメニュー表示用、スクリプトを動かすためだけのフィールド、単なる入れ物です。このグローバル格納フィールドをレイアウトに配置してコントロールスタイル「ポップアップメニュー」に指定。値一覧には目的の言葉をあらかじめ仕込んでおくわけですが、目的の言葉とは・・・後ほど具体例で。グローバルなメニュー表示用フィールドに割り当てるスクリプトを書き、フィールドスクリプトトリガーOnObjectModifyに仕込みます。これはフィールドの内容が変更されれば実行されるトリガーです。値一覧で選ばれた項目名を実行させます。必要に応じてですが、実際に動かすスクリプトです。トリガーに設置するスクリプトだけで事足りる場合もありますから必要ならということで。以上を用意して快適メニューを作ります。スクリプトトリガOnObjectModifyにセットするスクリプトにはパターンがあります。理屈は同じですがちょっと異なります。ポップアップメニューの目的にもよります。スクリプトを実行させるスクリプト特定の処理(検索・絞り込み)を行うためのスクリプトこういうことです。値一覧で選んだ「項目」をトリガーで実行するわけで、その項目が何なのかということに直結します。スクリプトを実行させるメニューすでに作成済みの何かと便利な使えるスクリプト、そのスクリプト名と同じ名前を値一覧に仕込みます。フィールドトリガーのスクリプトもかんたんです。これだけで基本OK(あといろいろ丁寧に作り込むこともありますけど基本はこれだけ)例えば「タイトルでソート」というソートさせるスクリプトを作りますね。値一覧に「タイトルでソート」という項目を追加しますね。メニューフィールドのトリガーに「スクリプトを実行[名前で]」を仕込みますね。ブラウズモードでメニューから「タイトルでソート」を選びますね。するとタイトルでソートスクリプトが実行されますね。実に簡単な話ですよね。基本、上記だけですべて事足りますが、少し違うパターンもあります。スクリプト名による実行ではなく、値一覧の項目名を使って特定処理をさせるパターンです。メニューで選択された項目名に応じて特定フィールドを検索・絞り込みするということもその一つ。値一覧に、検索・絞り込みさせたい言葉を追加しておきます。メニューのトリガーには「その言葉(フィールド内容)で検索」するスクリプトを仕込みます。検索してざっくり絞り込むことは頻繁にあると思います。値一覧に「画像/動画/音楽」と仕込んでおくとしましょう。いえ、もっと楽するために、値一覧にファイル種類フィールドそのものを指定します。入力された内容が値一覧として得られます。フィールドスクリプトトリガーOnObjectModifyではスクリプトを以下のように仕込みます。検索実行ポップアップメニューで選んだテキストが指定フィールドを対象に検索されるというだけです。汎用性を高めましょうか。スクリプト引数を指定する手間を惜しまなければこのスクリプトは汎用的な検索スクリプトとなります。この場合なら、スクリプトトリガーに目的のフィールド名「ファイル種類」をスクリプト引数として付与してあげます。検索実行どこでも使える汎用的な検索スクリプトできました。スクリプトは放っておくと増えすぎますから、できるだけ汎用的なスクリプトを書いてあちらこちらで流用するのが望ましいですよね。スクリプトを名前で実行させるメニューと理屈は同じですけど、スクリプトを名前で実行ばかりを作っていたらスクリプトが増えすぎて鬱陶しいので、利用目的が決まっているもの(この場合は検索)は使い回せる形にしてスクリプトが増えすぎることを防ぎます。条件に応じて切り替わる値一覧メニューグローバルフィールドと値一覧の組み合わせ、条件に応じて変化する親子メニューで活躍したりもします。最初のポップアップメニューで「お料理」を選んだら、その隣のメニューには「だし巻き/タコ唐揚げ/鯖の燻製」などと表示され、「ドリンク」を選んだら隣メニューに「生ビール/ワイン/焼酎」などと表示させたりするアレです。「動的値一覧」とよく呼ばれています。このアレはFileMakerの鬼門の一つで、理解するのがとても難しいんですが、まあ、そういうこともできます。私はあほですのでこれを理解するのに長い年月が必要でした。(大分類に照合)」を仕込んで、それをグローバルメニューに代理入力させて検索・絞り込むというやり方です。丁寧に書き出すと長くなるかもしれないのでここでは割愛します。これをポップアップメニューと組み合わせて上のようなポータルのフレキシブルな絞り込みに使ったりしています。グローバルフィールド専用ファイル私個人的にですが、どんなFileMaker書類を作っても、ボタンと同じくらいこうしたポップアップメニューを多用するので、結果グローバルフィールドがたくさん作られます。このフィールドは単なる代理の入れ物でどうでもいいものです。あちらこちらで同じようなものを多用するから、専用ファイルを作りました。「参照フィールド」「スクリプトメニュー用1」「検索用2」とか、そんな名前のグローバル格納のフィールドばかり集めたグローバル専用ファイル。このファイル、多くの自作ファイルメーカー書類にテーブルを読み込んで利用しています。格納がグローバルだとリレーションしなくてもどこでも使えるので、これ意外と便利です。いうか今まで何やってたんというか。システムFMファイルとして重宝しております。長年使ってきて今頃こんな楽ちんな使い方を思いつくとは、おれって天才かめっちゃあほのどちらかやな。スクリプトについてちょっと書いてしまいましたが、次のページに続きます。