Tips No.003 【[戻る]ボタンと[進む]ボタン】

[戻る]ボタンと[進む]ボタン

公開日:2014/09/02

以前に、FileMakerでWEBブラウザの[戻る]ボタンのようなレイアウト移動を可能にさせるTipsを作成する機会がありました。ところがその時、[進む]ボタンに関しては全く考慮しませんでした。そもそも技術的に困難だったのか ( 私自身の技能も含む ) 、または知恵を絞る事が億劫だったのか ( 恐らくコッチ ) 、今となっては知る由もありませんが、この度、ヒマに託けまして「そう言えば[進む]ボタンって、できるのかな?」と思い立ち、挑戦してみました。

結論から申しますと、容易く出来てしまいました。「何故、今まで試さなかったんだろう?」と思えるほどでして、過去の様々な仕事上のシーンで、勿体ない事をしたなあ…。

…さて、気を取り直して、解説に移ります。この機能を実装する為の準備として必要なものは、3つのフィールド ( 3つのグローバル変数でも可 ) 、2つのスクリプト、これだけです。

今回作成したフィールドは、以下のとおりです。

■フィールド
[Gt_遷移履歴] - テキストタイプのグローバルフィールド // 画面移動の履歴を格納します
[Gn_遷移番号] - 数字タイプのグローバルフィールド // 現在表示している画面の移動番号
[Gn_制御Fg] - 数字タイプのグローバルフィールド // スクリプトトリガの動作制御

上述のとおり、このTipsではフィールドを作成していますが、グローバル変数を使用した方がスマートかもしれません。また、レイアウト上にはフィールド [Gt_遷移履歴] と [Gn_遷移番号] を置いていますが、このTipsの動作をご覧いただく為の便宜的なもので、実際には表示させる必要はありません。

次に、スクリプトを見てみましょう。

■スクリプト
[T_遷移履歴] - レイアウト自体のスクリプトトリガに組み込みます
[M_遷移ボタン] - [戻る]ボタンと[進む]ボタンです

これらのスクリプトについては、実際にTipsをご覧いただいた方が解り易いと思いますので、その詳細はここでは説明しませんが、カギは[T_遷移履歴]です。このスクリプトを、画面移動を履歴として取得したいレイアウトの「レイアウト設定」で、スクリプトトリガのイベント「OnLayoutEnter」に指定します。こうする事で、当該レイアウトがロードされる度にスクリプトが呼び出されて、画面移動の履歴が蓄積されていきます。ですので、レイアウト移動を実行するスクリプトに履歴を取得する為のスクリプトステップを組み込む必要は無く、ステータスツールバーのレイアウトの移動でも、しっかりと履歴が取れます。
但し、これには問題点もあるので注意です。と言うのも、ロードされる度に遷移履歴を取得するスクリプトが動きますので、他のスクリプトで「レイアウト切り替え」スクリプトステップを設定すると、予期せずに画面移動の履歴がどんどん更新されてしまいます。それを防ぐのがフィールド [Gn_制御Fg] です。

スクリプト [T_遷移履歴] はフィールド [Gn_制御Fg] が空欄の場合に限り実行するように設定しています。ですので、他のスクリプトで「レイアウト切り替え」スクリプトステップを設定する場合、その動作で画面移動の履歴を取得したくない時には、フィールド [Gn_制御Fg] に数値を入力すれば、スクリプトトリガに指定したスクリプト [T_遷移履歴] は動作しません。また、制御後は、フィールド [Gn_制御Fg] を空欄にする事を忘れないようにしてください、遷移履歴が取れなくなります。
スクリプト [M_遷移ボタン] では、この制御を使用していますので、併せてご覧ください。

今回のTipsはお役に立ちましたか?
なおダウンロードは、今回より「.fp7」の公開は中止して、「.fmp12」のみを用意する事にさせていただこうと思います、億劫なものですから(笑)。

※2014/10/01 追記
当Tipsのスクリプトで「MiddleValues関数」と「Substitute関数」を併せて使用している箇所がありますが、代わりに「GetValue関数」のみを使用するだけで、同様の効果が得られます。こちらの方が、計算式が冗長にならずにキレイです。
是非、その方法もお試しください。

- ダウンロード -