スライドコントロールを動かしたらボタンバーも追随させるテクニック
スライドコントロールを動かしたらボタンバーも追随させるテクニック
スライドコントロールと、ボタンバーを使って、タブコントロール的なことやるのに…
スワイプジェスチャーありにして、スライドコントロール内をスワイプで移動できるようにしたい場合…
ボタンバーセグメントのオブジェクト名をそれぞれ、bar.1、bar.2、アクティブセグメントの計算式を…
"bar." & GetValue ( Get ( トリガターゲットパネル ) ; 1 )
と設定して、OnPanelSwitch スクリプトトリガをアサインするスクリプトに、[ウインドウの再表示]をさせてやることで、
スワイプジェスチャーでもナビゲーションドットでも、正しいアクティブセグメントが返るように設定していますが…
Fukky の(グローバルフィールドをトリガ的に使えば再描画の類は要らない…という)話で、「じゃあ…グローバルフィールドを使って、アクティブセグメントの計算式は、そのグローバルフィールドを見るように設定して…
フィールド設定("bar." & GetValue ( Get ( トリガターゲットパネル ) ; 1 ))するスクリプトを OnPanelSwitch スクリプトトリガにアサインしたら [ウインドウの再表示] とか要らないんじゃね?」
とやってみたらビンゴ。
スライドコントロールを動かしたらボタンバーも追随させるテクニック(FileMaker Magazine 編)
更に、FileMaker Magazine で、"Creative Slider Panels" というのがあった。
やり方は…
ボタンバーセグメントのオブジェクト名をそれぞれ、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 ( トリガターゲットパネル ) の値は空なのだろう。
今回の手法は、アクティブセグメントはグローバル変数に格納し、そのグローバル変数は、パネルスイッチのタイミングで更新されるということ。
※ グローバル変数の代わりにグローバルフィールドを使えば、最期の [オブジェクトの更新] が要らない。
"Creative Slider Panels" で提供されているサンプルファイル には、Hacked Version という「スライドコントロールのドットをCSS的に大きくして、それぞれのドットの上にダミーのボタンバー(何もしない)を重ねるという手法」が披露されている。このファイルで、スタイルを反映させることで簡単に実装できる。
0コメント