みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
FMA18
PatternCount ( Get ( アプリケーションバージョン ) ; "Go_iPad" )
レイアウト切り替え
PatternCount ( Get ( アプリケーションバージョン ) ; "Go" )
レイアウト切り替え
PatternCount ( Get ( アプリケーションバージョン ) ; "Web" )
レイアウト切り替え
上記の3種類でレイアウトを分けていたのですが、Androidユーザーにはまた別のレイアウトを選択させるつもりで下記を追記したのですが上手く動きません…
if [ Get (デバイス) = 5 ]
レイアウト切り替え [ 『Androidレイアウト』; アニメーション : なし ]
End if
Web Direct をPCからアクセスする場合とAndroid(Chromeなどのブラウザ)からアクセスする場合のレイアウト切り替えを行いたいのですがどのようにしたらいいのでしょうか?
1. Android端末からアクセスしてもPC用画面に飛んでしまう。
2. Get(デバイス)をフィールド配置して画面を見ると5と返ってきている。(caseで5なら"Android"と表示させている)
以前のスレッドを参考にしてみたのですが、思った動作になりません。
https://fm-aid.com/bbs2/viewtopic.php?id=5964
よろしくお願いします。
Offline
スクリプト全体の流れが見えないとなんとも......書けませんか?
最初の PatternCount の式は If と Else If の条件ということですか?
もし、最初の If の Else If の最後に Get ( デバイス ) = 5 を足している場合、
3番目の PatternCount ( Get ( アプリケーションバージョン ) ; "Web" ) が先に成立してしまうのでAndroid レイアウトには切り替わりません。
3番目の条件より上に移動させましょう。
別の If として足しているなら何か見落としがあるのでしょう。
Last edited by Moz (2020-01-24 08:11:12)
Offline
ElseIfを使ってるか、Ifをネストしているのでは。その場合優先するケースを先に書かないと、「追加」で後ろに書いてもどれか1つしか実行されません。
皆様のアドバイスを基にスクリプトデバッガをしっかりと見ながら確認しました。Elseなどでスキップされている箇所が何箇所もあり、流れがグチャグチャでした。
ifやElse ifの流れを考え、根本的に見直しました。
最初のアプローチ、PatternCount ( Get ( アプリケーションバージョン )は止め、全てGet(デバイス)で接続機器を判定し、それを変数に置き換えました。
変数の設定 [$$system ; 値: Case ( Get (デバイス) = 3 ; "iPad" ;
Get (デバイス) = 4 ; "iPhone" ;
Get (デバイス) = 5 ; "Android" ;
"pc")]
If [ $$system = "Android" ]
レイアウト切り替え[ Android用レイアウト ]
End If
など、各デバイスに応じてレイアウトを指定してあげました。
変数を用いて If / Else / Else If /End If の順番や必要性をしっかり考えて直しました。
iPhoneからFileMakerGoでアクセスした場合とWeb Directでアクセスした場合
AndroidからWeb Directでアクセスした場合
PCからFMA18とWeb Directでアクセスした場合
それぞれ任意のレイアウトに振り分けることができました。
Ifは頻繁に使われる条件、手軽さ故にサラッと目を通すと見落としがちになりますね。
皆様のアドバイスがヒントになり、色々と考え直させられます。ありがとうございました。
Last edited by ウィン (2020-01-25 17:54:59)
Offline
Pages: 1
[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 512.59 KiB (Peak: 519.14 KiB) ]