まだまだFileMakerPro初心者としては簡単な事でも時間を要します。
タブで見積書、請求書、完了という3つのタブを設置しました。
ココがポイント
そのタブの切り替えにより特定のボタンを表示・非表示させたい
タブ切替で様々な書類を整理
見積書や請求書などは、毎年毎年どんどん溜まっていく一方です。もう紙ベースで残しておくには限界がありますね。
そんな大量に書類があるような場合は、一画面で簡単に見積書や請求書が切替て確認できるような機能でタブ機能があります。
見積書や請求書、そして回収が完了した請求書などを判別するために、「請求フラグ」というフィールドを設けて、タブに設置するときに、フィルタをかけて、タブのデータを分別するようにしてあります。
このようなタブの設定をするだけで、簡単に書類を分別表示ができるのは本当に便利ですね。
タブの切り替え時にスクリプト実行
ここから悩みました。
さらに詳しく
タブにボタンの表示・非表示のスクリプトがあるのか?
と調べまくりましたが適当な回答がみつかりませんでした。
タブの大枠を選択するとスクリプトトリガの設定がでてきたので、OnObujectEnterにグローバル変数を設定してみました。
つまり、
ココがポイント
ボタン(オブジェクト)を変数により隠す方法
を考えました。
しかし、うまく動いてくれませんでした。
本当に変数に値が代入されたかを確認するために、レイアウト上に「マージ変数」を設置しました。
※挿入>>マージ変数
実際に、タブをクリックして選択しましたが、マージ変数に何も表示されませんでした。
つまり、タブをクリックしてもスクリプトが動いてないのです。
やっとできたのが、スクリプトトリガの設定で、OnObujectEnterじゃなくて、
ココがポイント
OnPanelSwitch・・・タブを変えると実行される
を使ったら変数が代入されるようになりました。
タブごとに処理を変更
3つのタブを切り替えるごとに同じ処理をするなら問題ありませんが、タブごとにボタンも表示・非表示という要望もあります。
スクリプトトリガに、下記の様なスクリプトをやると、タブごとに違った処理が可能になります。
ちなみに、Get (トリガターゲットパネル) により、タブの情報として、「インデックス番号 タブ名前」が取得できるようなのです。
GetValue(Get (トリガターゲットパネル) ; 1)によりインデックス番号だけが抽出される訳です。
自分の場合は、見積書:1で、請求書:2で、完了:3という感じでグローバル変数「$$請求書タブ」に値が代入されることになります。
変数によってオブジェクトを隠す
このケースでは、「請求書」タブに移動した時に、「レコード複製(請求書)」というボタンが非表示になってくれればいい訳です。
タブ選択により変数値が変わるので、あとは、「次の場合にオブジェクトを隠す」から設定をしました。
$$請求書タブ = 2 の時は、1(True)でボタンが隠れる事になります。
$$請求書タブ が2以外の場合は、0(False)となり、ボタンは隠れません。つまり表示しています。
まとめ
マイクロソフトアクセス(Access)を使っていることが多かったので、どうしても簡単な事でさえもVBAのような思考を考えてしまいます。
FileMakerの場合は、上手に変数を使ってスクリプトを動かく事ができれば自分が思ったような動きをしてくれるようです。
今回のケースでは、ボタン(オブジェクト)を表示・非表示設定を行いましたが、
ココがおすすめ
タブの切り替えにより自由にスクリプトを動かす事が出来る方法
を学びました。
良い勉強になりました。