みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になります、FMpro12,FMGo12-13です。
・フィールド1からフィールド2へタブ順が設定されています。
・フィールド1に値一覧で値を数項目用意しています
通常はフィールド1を入力した後フィールド2に移動する仕様で差し支えないのですが、
時折フィールド1に値一覧から値を選んだあと、そのままテキストを追加したいケースがあり、テキストを追加入力後にフィールド2へ移動したい場合があります。
この場合、どのような制御をすればよろしいでしょうか。
よろしくお願いします。
「時折」が条件化できなかったり、
頻発しなかったりする場合、マウス・タップ操作で値の末尾にカーソル入れて入力した方が早いと思いますよ。
Last edited by Moz (2014-06-13 14:02:14)
Offline
間違ってたらすいません。
1:フィールド1にドロップダウン:値一覧設定
2:フィールド1にスクリプトトリガ:OnObjectModifyを設定:
If (q::フィールド = "値一覧の移動したくない値")
フィールドへ移動:フィールド1指定
現在のスクリプト終了
End if
*値一覧の移動したくない値 = A商品 という具合に、値一覧の中で移動したくない値が決まってる場合です。
*値一覧のA商品でも、移動してほしい場合、したくない場合があるのならば制御は不可能かと。
コンピューターには判断できないかと。
その場合方法はありますが、やる意味がないというか・・・
正直、それほど頻繁にないのだればMozさんのご意見がベストではと思います。
ユーザーがルールを理解してないと、混乱する可能性があります。
すいません、q::フィールド = フィールド1の間違いです。
逆に考えればうまく行くかも。
タブ順で、移動しない様に設定しておきます。
トリガーで、フィールド2へ移動する値が入れば、移動させる。
Offline
みなさま、ご回答ありがとうございます。
返信が遅れて申し訳ありませんでした。
ご指摘の通り、入力してもらうスタッフにはもう少しルールを限定しようとおもいます。
それで整理したのが以下のような状況です。
値一覧に15の値があり、
"あ"
"い"
"う"
"え"
"お"
"か"
"き"
"く"
"け"
"こ"
"さ"
"し"
"す"
"せ"
"そ"
フィールドには、この値単体のこともありますし、時には
"あか"
"あき"
"あく"
"うく"
"いけ"
"いこ"
…のような2文字の組み合わせの値も入ることがある、としますとどのようにフィールド設定するのがよろしいでしょうか。(実際は"文字"1文字がもう少し長い用語なのです)
この入力ができたあと、タブ順に進めるとベストなのですが…
時には、のリストが全部ないと、どうにもできません。
1文字の場合が多いなら、一覧を出さず末尾に戻るボタンを作るぐらいしか
時々により・・・ということであれば、人間でしか判断できないので、難しいのではと思います。
それでもするならば、2パターン。
A:値一覧で2文字組み合わせも予め用意しておき、選択できるようにしておく
但し、文字組み合わせがそのときによって変わるなら、めちゃめちゃ多くなる。
B:フィールドを3つ用意する。
・フィールド1(テキストタイプ)に値一覧選択
・フィールド2(テキストタイプ)に値一覧選択
・フィールド3(テキストタイプ):計算値:フィールド1&フィールド2
&タブ順設定を空白 &入力できなくする。
・フィールド4
でフィールド1で選択したらフィールド2に移動するので、
・値が必要であれば値を選択
・値が必要なければタブ移動
すれば、フィールド3に値が反映され、フィールド4に移動してると思います。
ただ・・・正直自分で選択しなおして入力したほうが速いのでは?と思います。
値一覧の値そのまま(追加入力をしないので次のフィールドへ移動する)と
値一覧の値と追加の入力(追加の入力をするので次のフィールドへ移動しない)
どちらかがパターン化できなくてはどうにもなりませんね。いまのままでは曖昧すぎです。
どうも曖昧なまま現場判断で進むような印象を受けますので、
Shin さんの提案の様に抜けない(タブ順設定しない)のが基本で
特定のパターンのみ次のフィールドへ移動がよいのではないでしょうか。
スクリプトトリガ等で「抜けない」様に制御するとハマリそうですね。
やってみたもののイレギュラーが多くて結局制御を外して手作業に戻るパターンな気が......(汗)
Last edited by Moz (2014-06-15 20:13:07)
Offline
みなさま、アドバイスありがとうございます。
こうして客観的な意見をいただけて問題整理の糸口が少しづつほどけてくる事に感謝します。
タブ順を条件にいれていたのはiPadミニという限られた画面上のわりにフィールド数が多いためです。
ですが、戻って入れ直しのほうが効率が良さそうであればそのほうが良さそうです。
が…1点おねがいします。タブ順は考えずに。。。
MOZさんご指摘の
「値一覧の値と追加の入力(追加の入力をするので次の フィールドへ移動しない」
はどのようにすればよろしいでしょうか。
選択範囲を指定スクリプトをトリガに使えばよさそうな気がしたのですがうまく設定出来ません。
カスタマイズが比較的やりやすそうということで入力する側の意見をなるべく反映させるようにしてきたのですが、今回のように出来にくいこともわかっておく事が大事だと思いました。
(職場で技術的な相談に乗ってもらえる者がいないのではまってしまうことがしばしばですので…)
・トリガを使わない場合
すべてのレイアウトオブジェクトからタブ順を消す。
・トリガを使う場合
OnObjectSave で[現在のスクリプト終了[結果: False]]
逆に[現在のスクリプト終了[結果: True]]で次のフィールドへ移動するので、
抜ける条件以外で False にしておけば追加入力の際だけ抜けないは実現可能。
フィールドの外をタップで確定できるし、次のフィールドへ移動するキー(Tab,Enter,Return)で次のフィールドへ移動できる。
OnObjectExit で[現在のスクリプト終了[結果: False]]
ドロップダウンリストの「選択後にValidate,Save,Exit」する「Exit」の動きを止めます。
面白いので試すだけ試してみたらいいと思います。非推奨。
※試す際は共有しているデータベースでトリガスクリプトを変更できる状態で行うこと。iPadに入れたファイルで試すのはお勧めできません。
他にもあると思いますが、条件が確定できたら2番目の OnObjectSave で入れてみてはどうでしょうか。
Last edited by Moz (2014-06-16 10:41:53)
Offline
質問するときには曖昧な例にしないで、在庫管理で使うとか具体的に書いた方がいいですよ。
具体的に書いてあれば、既に答えを持っている方もいるかもしれませんから。
今回の場合は、もしかしたら、複数のフィールドやレコードに別けた方が無難かもしれません。
Mozさん
どうもありがとうございます。
このフィールドに行いたい挙動は
>OnObjectSave で[現在のスクリプト終了[結果: False]]
でできそうです、確認しました!
この[結果: False]の意味を今後のためにも教えて頂けませんか?
スクリプトは終了するのに結果に[真][偽]を入れることで何が起こっているのでしょうか?
・タブ設定されているから次に移動するのに、スクリプトを(意図的に発動して)終わらせて、同フィールド内で次のコマンドを待つ状態にできる
ということでしょうか?
スクリプトトリガについてはヘルプがおすすめです。
http://www.filemaker.com/help/13/fmp/ja … tml#914082
ここで 処理前/処理後 と書かれていると思いますが、
処理前となっているものはスクリプトの結果を False = 偽 で返すことで、本来行われる動作そのものをキャンセルできます。
Exit を False にすることを試したかどうかわかりませんが、
フィールドから抜けられない無限ループに陥るのは Exit は 処理前 なので抜ける前にキャンセルされているからですね。
OnObjectSave は 処理後 なのでフィールド内容の保存までは行われていますが、
「次のタブ順のオブジェクトへ移動する」動作がキャンセルされてフィールド内に留まっています。
Last edited by Moz (2014-06-16 13:27:28)
Offline
Mozさん、ありがとうございます。
スクリプトトリガの理解が足りませんでした。
フィールド入力系は無限ループで以前挫折したことがあることも思い出しました。
教えて頂いたところをじっくり勉強してみます。
ありがとうございました。
Pages: 1
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 554.74 KiB (Peak: 575.65 KiB) ]