初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-12-26 18:09:03

KAZU
Guest

繰り返しフィールドの制御について

繰り返し3回のフィールドがあります

ON ON ON
と入力されていて
一番左端に OFF を入力すると

OFF OFF OFF

と置き換え

二番目に ON を入力すると

ON ON OFF

一番目に ON を入力すると

ON OFF OFF

三番目に ON を入力すると

ON ON ON

三番目に OFF を入力すると

ON ON OFF

となるように
するにはどのようなスクリプトになりますか?

わかりにくいかもしれませんが
対象の繰り返し位置からみて
その右側の繰り返し位置に ON が入力されているなら ON にする
逆に 左側が OFF の場合には OFF にする
といった感じです

#2 2016-12-26 19:13:44

シャチ
Member

Re: 繰り返しフィールドの制御について

環境が書かれていないので スクリプトトリガーが 使えるものとして

フィールドをクリックした時に
1:そのクリックした繰り返し位置をGet
2:そのON-OFFのデータをGet
3:その2つのデータをもとに
  条件分岐して
  描く繰り返しに フィールド設定で データを送り込む

これをそのフィールドのスクリプトトリガーの
  OnObjectModify に設定する

という流れになると思います。

Offline

#3 2016-12-26 19:32:59

シャチ
Member

Re: 繰り返しフィールドの制御について

こんな風になるんかなと 思うものを作ってみました

http://yahoo.jp/box/YMMCYX

にあります。
違っていたら、修正してください

Offline

#4 2016-12-26 21:28:53

Hiro
Member

Re: 繰り返しフィールドの制御について

繰り返し[3]フィールドへの入力は値一覧(ON/OFF)から選択入力するものとして、

【OnObjectModifyトリガ・スクリプト】

・  変数を設定 [$pos; 値:Get(アクティブ繰り返し位置番号)]
・  変数を設定 [$val; 値:テーブル::フィールド[$pos]]
・If [$pos=1 and $val="ON"]
・  変数を設定 [$lst; 値:List("ON";"OFF";"OFF")]
・Else If [$pos=1 and $val="OFF"]
・  変数を設定 [$lst; 値:List("OFF";"OFF";"OFF")]
・Else If [$pos=2 and $val="ON"]   
・  変数を設定 [$lst; 値:List("ON";"ON";"OFF")]
・Else If [$pos=2 and $val="OFF"]
・  変数を設定 [$lst; 値:List("ON";"OFF";"OFF")]   
・Else If [$pos=3 and $val="ON"]
・  変数を設定 [$lst; 値:List("ON";"ON";"ON")]
・Else If [$pos=3 and $val="OFF"]   
・  変数を設定 [$lst; 値:List("ON";"ON";"OFF")]
・End If
・Loop
・  変数を設定 [$i; 値:$i+1]
・  フィールド設定 [テーブル::フィールド[$i]; GetValue($lst; $i)]   
・  Exit Loop If [$i=3]   
・End Loop



【補足】 上記スクリプト20ステップは、より短く6ステップで書けますネ。

・  変数を設定 [$lst; 値: ※下式]
・Loop
・  変数を設定 [$i; 値:$i+1]
・  フィールド設定 [テーブル::フィールド[$i]; GetValue($lst; $i)]   
・  Exit Loop If [$i=3]   
・End Loop

        -------------------------------------------------------------
           Let([
                 $pos=Get(アクティブ繰り返し位置番号);
                 $val=テーブル::フィールド[$pos]
           ];
                 Case(
                       $pos=1 and $val="ON"; List("ON";"OFF";"OFF");
                       $pos=1 and $val="OFF"; List("OFF";"OFF";"OFF");
                       $pos=2 and $val="ON"; List("ON";"ON";"OFF");
                       $pos=2 and $val="OFF"; List("ON";"OFF";"OFF");
                       $pos=3 and $val="ON"; List("ON";"ON";"ON");
                       $pos=3 and $val="OFF"; List("ON";"ON";"OFF")
                 )
           )
        -------------------------------------------------------------

Last edited by Hiro (2016-12-27 01:05:06)

Offline

#5 2016-12-27 19:55:30

旅人
Member

Re: 繰り返しフィールドの制御について

こんなのでもいいのかな?サンプル
6繰り返しにしてみたけど、これも勿論検証不十分。
タブ移動は外してます。
http://pupld.net/21/161227/c09i0vk5c3/index.cgi   
オンオフ.fmp12

Offline

#6 2016-12-27 22:32:25

Hiro
Member

Re: 繰り返しフィールドの制御について

> #5 旅人さん
確かに、繰り返し回数が増えるとインデックス参照方式は
加速度的に複雑になるので、#5サンプルの考え方の方が
簡潔で良さそうですネ。

Last edited by Hiro (2016-12-27 22:35:11)

Offline

#7 2016-12-28 09:10:48

scripter
Guest

Re: 繰り返しフィールドの制御について

クリックした位置を反転
ONになった場合は左からそこまでをON(残りはOFFのまま)にする
OFFになった場合はそこから右をOFF(残りはONのまま)にする
じゃないのかな。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.004 seconds, 9 queries executed - Memory usage: 517.94 KiB (Peak: 522.84 KiB) ]