FileMaker Magazine で、”Creative Slider Panels” というのがあった。
(FileMaker Magazine は有料ですが、とても面白く有益ですのでオススメです)
ボタンバーセグメントのオブジェクト名をそれぞれ、bar.1、bar.2、アクティブセグメントの計算式を…
単純に… $$SEGMENT.ACTIVE としておいて、$$SEGMENT.ACTIVEの値を
OnPanelSwitch スクリプトトリガをアサインするスクリプトによってパネルがスイッチする度に入れ替えてやって、
ボタンバー自体を [オブジェクトの更新]させるとうまくいく。
変数を設定 [ $index ; 値: GetValue ( Get ( トリガターゲットパネル ) ; 1 ) ]
変数を設定 [ $$SEGMENT.ACTIVE ; 値: GetValue ( List ( “bar.1”; “bar.2”; “bar.3”; “bar.4”; ); $index ) ]
オブジェクトの更新 [ オブジェクト名: “bar.nav” ]
という具合に。
以前、アクティブセグメントを “bar.” & GetValue ( Get ( トリガターゲットパネル ) ; 1 ) としていたときうまくいかなかったのは、
Get ( トリガターゲットパネル ) という「パネルがスイッチした瞬間にのみ評価される関数」を直接アクティブセグメントの指定式の中で使ってしまったため。
アクティブセグメントが評価されるタイミングでは、Get ( トリガターゲットパネル ) の値は空なのだろう。
今回の手法は、アクティブセグメントはグローバル変数に格納し、そのグローバル変数は、パネルスイッチのタイミングで更新されるということ。
※ グローバル変数の代わりにグローバルフィールドを使えば、最期の [オブジェクトの更新] が要らない。
この記事へのコメントはありません。