排他的論理和をかっこよく使う

  • URLをコピーしました!

こんにちはジョージです。一般的なカスタム App 開発ではまず使うことのない「XOR」を無理矢理使ってみます。

XOR とは

計算式ダイアログの演算子に鎮座する「これ」です。ちなみにエクスクルーシブオア(eXclusive OR)と読みます。

スクリーンショット 2022-11-29 11.03.18.png (49.6 kB)

XOR の真理値表

XOR の論理演算は以下のような特性があります。2 つの入力が異なる場合、結果に真を返します。なかなひねくれてます。はたして XOR をカスタム App に取り入れることはできるのでしょうか???

XY結果
000
011
101
110

トグルスイッチ

以前 Abs 関数でも紹介しましたが、

トグルとは現在の状態を交互に反転する操作です。変数 $$flg に対して Abs 関数でトグルを実装するには以下の計算式が利用できます。

$$flg = Abs( $$flg - 1 )

これを XOR で置き換えると以下のようになります。少しだけ記述が少なくなりましたね!

$$flg = $$flg xor 1

XOR の真理値表に置き換えると以下の演算が対応します。$$flg 現在の状態が入力 1 を加えると反転するというわけです。

$$flg入力結果
011
110

ボタンに応用

カスタム App に応用してみましょう!まずはボタンバーを作成してオブジェクト名に「SW」と指定します。

スクリーンショット 2022-12-01 16.24.20.png (304.7 kB)

さらに、アクティブセグメントの背景を青で指定し、内側の陰影でボタンが押し込まれた感じに設定します。

スクリーンショット 2022-12-01 16.25.46.png (317.9 kB)

ボタンバー設定ダイアログから、アクティブセグメントの指定を「False」とします。これはボタンバーのディフォルトのセグメントの状態になります。※アクティブセグメント「なし」ではうまく動作しません。

スクリーンショット 2022-12-01 16.24.57.png (229.6 kB)
スクリーンショット 2022-12-01 16.25.05.png (184.3 kB)

最後に、処理アクションにスクリプト「トグル」を指定します。

スクリーンショット 2022-12-01 16.42.18.png (84.9 kB)

スクリプトの中身はこんな感じです。1行目に xor を使ってみました。

変数を設定 [ $$flg ; 値: $$flg xor 1 ] 
If [ not $$flg ] 
オブジェクトの更新 [ オブジェクト名: "SW" ; 繰り返し: 1 ] 
End If
スクリーンショット 2022-12-01 16.33.57.png (134.3 kB)

ボタンをクリックして $$flg が 1 になると、アクティブセグメントが有効となりボタンが青い背景となります。
さらにボタンを押すと $$flg が 0 となりボタンバーの表示が初期化され、元の白い背景に戻ります。

スクリーンショット 2022-12-01 16.25.20.png (117.0 kB)
スクリーンショット 2022-12-01 16.25.24.png (121.2 kB)

まとめ

いかがでしたでしょうか? FileMaker のカスタム App でトグルといえば Abs 関数を使ったものが多い印象ですが、あえて XOR を使ってみるのも面白いと思います!気になる方は試してみてね。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!