1. FileMaker Paradise
  2. 実践編
  3. 「次の場合にオブジェクトを隠す」をわかりやすく使う

「次の場合にオブジェクトを隠す」をわかりやすく使う

FileMakerの便器な機能の一つである「次の場合にオブジェクトを隠す」は、非常に便利な機能です。特定のスクリプトを割り当てたボタンを使う人によって、隠したい場合や、処理が終わったことを示す表示を行いたい場合などに重宝するこの機能。今回は、この便利機能をご紹介していきます。

「次の場合にオブジェクトを隠す」の基本

レイアウトモードで、インスペクタ(位置、サイズ、色などのオブジェクトの見た目に関するウィンドウ)の中にある「次の場合にオブジェクトを隠す」に計算式(オブジェクトを隠す条件)を設定することによって、特定のユーザーにだけ見せたり、特定のフィールドにデータが入力されている場合に表示させたり、隠したりしたい場合に重宝されます。

「次の場合にオブジェクトを隠す」の計算式の設定は、「隠したい」条件を設定します。「表示したい」ではありません。この点が意外に筆者はこんがらがってしまう場合があります。

FileMakerに限らずですが、条件式で条件を設定し、それに合う場合に「なにかをする」という設定をよくします。Ifでは、設定した条件式が合う場合に、それ以降のスクリプトステップを実行していきます。条件に合う場合に「何かをする」ということになります。

今回の「次の場合にオブジェクトを隠す」は、条件に合う場合に「隠す=表示しない」という逆パターンになってきます。

設定の実際

ここでは、アクセス権セットが特定のものでない場合に隠す、という設定を紹介します。

メンテナンス用のスクリプトや、レイアウトを移動するためのボタンを「完全アクセス権」のユーザーの場合に隠す、それ以外の場合に隠すという内容です。

次の場合にオブジェクトを隠す

計算式を工夫してみる

「完全アクセス権」ユーザーではない場合にボタンを隠すというのは、割とシンプルで、設定もしやすいと思いますが、少し複雑になると、とたんにわかりづらくなります。例えば、「完全アクセス権」のユーザーと、「システム部」というアクセス権セットを持っているユーザーの場合にボタンを表示したい、という状況があるとします。

この場合、条件が少し難しくなります。前の条件の完全アクセス権の場合にだけ表示する場合「get(アカウントアクセス権セット名) ≠ "[Full Access]"」となり、完全アクセス権じゃない場合に隠す、というシンプルなものになります。

しかしながら、「完全アクセス権」と「システム部」というアクセス権を持つ人以外にボタンを隠すという条件は、意外に複雑になります。複雑というより、頭がこんがらがるということかもしれません。

よくやってしまうのが「get(アカウントアクセス権セット名) ≠ "[Full Access]" or get(アカウントアクセス権セット名) ≠ "システム部"」です。実際には、「get(アカウントアクセス権セット名) ≠ "[Full Access]" and get(アカウントアクセス権セット名) ≠ "システム部"」です。

Case関数を使おう!

複雑な条件になる場合に筆者がよく使うのは論理関数「Case」で、条件を組むことです。

「Case ( get(アカウントアクセス権セット名) = "[Full Access]" or get(アカウントアクセス権セット名) = "システム部" ; 0 ; 1 )」

このようにすると組みやすくなるでしょう。表示したい条件のときに「0」を返すようにして、それ以外は「1」を返すようになっています。基本は隠す条件を組みますが、この方法だと、「表示したい」条件をまず考え、計算式を組むことができます。