0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FileMakerでヌルっとトグルスイッチを再現

Last updated at Posted at 2021-11-21

はじめに

@OnTheRocks_plzさん、@qbxxdpさんの「ヌルっとON/OFFボタン」に触発されて、チャレンジしたみたので、その記録。できるかどうか分からないのにチャレンジするのと、できると分かってチャレンジするのは、雲泥の差。しかも、できると分かってチャンレンジしても、全く分からないヤツもある。

実際の動き

20211121_SmoothToggleSwitch.gif

検証環境

macOS Monterey 12.0.1, FileMaker Pro 19.4.1

解説

サンプルファイルを見れば分かると思いますが、簡単な解説。

  • 11個のボタンを設定したボタンバーを用意。
  • 各ボタンのアイコンとして、トグルスイッチのアニメーションを11分割したも画像を設定する。
  • 各ボタンは、グローバル変数が、各数値に合わない時は「隠す」設定にしておく。
  • 0と1に相当するボタンに、トグルスイッチを変更するスクリプトを設定する。
  • グローバル変数は0から1まで0.1刻みでループで変化させる。
  • ボタンバーは最強らしい。

これでヌルっと動く。トグルするグローバル変数も0.1刻みで値が変更していくので、0/1で値を判定させている場合には、少し注意を要する。

グローバル変数の管理方法についてはこちらの記事を参照してください。導入の仕方での2個目の導入時においても、関数名を変更するだけで、スクリプトやオブジェクトに設定されているグローバル変数の呼び出し全ての名前が変わるのも、メンテナンス的に役立つ。

導入の仕方

  1. カスタム関数をインポート。
    サンプルファイルから、"Set.Toggle"、"Get.Toggle"の2つの関数をインポートする。
  2. スクリプトをインポート。
    サンプルファイルから、"button_Toggle_Switch()"スクリプトをインポートする。
  3. レイアウトオブジェクトをコピー&ペースト。
    サンプルファイルのレイアウトから、該当オブジェクト(ボタンバー)をコピーし、導入先へペーストする。

もし、2個目のトグルスイッチを導入したい場合には、サンプルファイル上で、

  1. カスタム関数の名前を変更。
    サンプルファイルで、"Set.Toggle"、"Get.Toggle"の2つの関数を、たとえば"Set.Toggle2"、"Get.Toggle2"に変更する。この時、それぞれの関数内で用いられているグローバル変数名も同様に変更しておく。
  2. スクリプトの名前を変更。
    サンプルファイルで、"button_Toggle_Switch()"スクリプトを、たとえば"button_Toggle_Switch2()"に変更する。

あとは初回導入時と同じ手順を踏む。

サンプルファイル

GitHubからダウンロードできます。

アカウントはadmin、user、fm1の3つが用意されており、いずれのパスワードもアカウントと同じです。いずれのアカウントも完全アクセスにしてあります。
ファイルオプションでuserでログインするようにしてあります。

未解決課題

「ショウリュウケン」「ハイパーオリンピック」は仕組みがさっぱり想像つかない。@p388cellさんの「うごく五輪」も全く分からない。誰か偉いヒト解説して。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?