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

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

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

You are not logged in.

Announcement

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


#1 2015-11-06 13:52:22

cosmo13b
Member

「オブジェクトへ移動」がうまく動作しない

「オブジェクトへ移動」がうまく動作せず、困っています。
やりたいことは、縦スクロールが長いレイアウトの中間部や下方を表示している状態から、
別レイアウトへ移動し、また戻ってきたときに、もとのフィールド位置を表示させたいという
ことです。
「フィールドへ移動」では、計算式でフィールド指定ができないので使えません。
下記の例は単純化して説明していますが、レイアウトAに該当するものが20ほどあり、
レイアウトBは、画像の拡大表示専用レイアウトで、こちらは1つしかありません。

[レイアウトA]

オブジェクトフィールド1(名前1)
オブジェクトフィールド2(名前2)
オブジェクトフィールド3(名前3)

[レイアウトB]

オブジェクトフィールド(グローバル)

上記のような構成で、レイアウトAのオブジェクトフィールドをクリックすると、レイアウトBの
オブジェクトフィールドで拡大表示するスクリプト(A)を、スクリプトトリガで動作させています。
拡大画像を閉じて、レイアウトAに戻るボタンに、スクリプト(B)を設定

スクリプト(A)

フィールド設定[テーブル名::オブジェクトフィールド(グローバル);Get(アクティブフィールド内容)]
変数を設定[$$レイアウト名;値:Get(レイアウト名)]
変数を設定[$$アクティブレイアウトオブジェクト名;Get(アクティブレイアウトオブジェクト名)]
レイアウト切り替え[レイアウトB]

スクリプト(B)

レイアウト切り替え[$$レイアウト名] …①
オブジェクトへ移動[オブジェクト名:$$アクティブレイアウトオブジェクト名] …②

この設定で、スクリプト(B)を実行すると、レイアウトAではなくレイアウトBが表示されます。
①だけの場合は、レイアウトAに戻れます。
レイアウトAで試しに②を実行すると、なぜかレイアウトBに移動してしまうのです。
レイアウトBのオブジェクトフィールドには名前を付けていないのに、なぜレイアウトが
切り替わるのか分かりません。

何か間違っている点があれば、お教えいただけると助かります。
宜しくお願いいたします。

Offline

#2 2015-11-06 14:30:50

Moz
Member

Re: 「オブジェクトへ移動」がうまく動作しない

何度やっても同じ結果なのですか?

①だけの場合は、レイアウトAに戻れます。
レイアウトAで試しに②を実行すると、なぜかレイアウトBに移動してしまうのです。

ここの検証はどのように行っていますか?

オブジェクトへ移動[オブジェクト名:$$アクティブレイアウトオブジェクト名]

この1行だけ実行したらレイアウトBに切り替わるということですかね......
オブジェクト移動は現在のレイアウト内のオブジェクトへ移動するステップですからレイアウト切替は行いません。

レイアウトBに移動してしまうときの「$$レイアウト名」の値は確認していますか?
単にスクリプトの繰り返しの中で変数の中身が "レイアウトB" になっているだけのように思います。

Last edited by Moz (2015-11-06 14:31:35)

Offline

#3 2015-11-06 17:24:09

cosmo13b
Member

Re: 「オブジェクトへ移動」がうまく動作しない

ご回答いただき、ありがとうございます。

Moz wrote:

何度やっても同じ結果なのですか?

はい、何度やっても同じでした。

①だけの場合は、レイアウトAに戻れます。
レイアウトAで試しに②を実行すると、なぜかレイアウトBに移動してしまうのです。

ここの検証はどのように行っていますか?

1.レイアウトAでオブジェクトフィールド1をクリックして、スクリプト(A)を実行
  ※ レイアウトBに移動して、オブジェクトフィールド(グローバル)に拡大画像が表示される

2.手動でレイアウトAに切り替えて、
  オブジェクトへ移動[オブジェクト名:$$アクティブレイアウトオブジェクト名] …②
  のみ記述した検証用スクリプトを、スクリプトワークスペースから実行

上記の手順で検証しました。

オブジェクトへ移動[オブジェクト名:$$アクティブレイアウトオブジェクト名]

この1行だけ実行したらレイアウトBに切り替わるということですかね......

そうです、この1行のスクリプトだけで、レイアウトAからレイアウトBへ切り替わりました。
あり得ない事だと思うんですが…。

初め、スクリプト(B)の①一行のみの時は、レイアウトAに戻れていたのに、②の一行を追加したところ
移動しなくなってしまったので、何事かと思って②の一行だけで検証した結果、レイアウト切り替え
されてしまったので、何が悪いの?と頭を抱えてしまいました。

レイアウトBに移動してしまうときの「$$レイアウト名」の値は確認していますか?
単にスクリプトの繰り返しの中で変数の中身が "レイアウトB" になっているだけのように思います。

いえ、そこは確認していません。
確認方法が思いつかなかったからなのですが、検証用のグローバルフィールドを2つ作って、計算式で
変数を入れれば確認できそうですね。やってみます。

(追記)変数の確認ができませんでした。フィールドオプション>計算式>$$レイアウト名、グローバル設定
     これではダメなんでしょうか?

Last edited by cosmo13b (2015-11-06 18:00:55)

Offline

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.023 seconds, 9 queries executed - Memory usage: 513.16 KiB (Peak: 517.7 KiB) ]