みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。FMP11 Mac 使用です。
スクリプトステップで、開いているタブによって条件分岐させたいのですが、ver12未満ではタブ名の取得ができないようで困っています。
良い案があればご教示いただけないでしょうか。
どうぞよろしくお願いいたします。
Offline
直接最前面のタブパネル名を得ることは出ないでしょう。
タブパネルにオブジェクト名を付けて、
GetLayoutObjectAttribute関数
で指定したタブパネルが最前面か否かの判定が出来ます。
ヘルプのリンクです。FM14ですが11でも同じです。
http://www.filemaker.com/help/14/fmp/ja … tml#100433
Offline
チポさま
早速ご回答くださりありがとうざいます。
その方法でうまくいきそう・・・なのですが、なぜか動きません。スクリプトステップではなく計算フィールドで用いても動作するのですよね?
いま、2つのタブがあり、オブジェクト名「A」と「B」を設定しています。
以下、いずれも計算フィールドで、
「最前面タブ判定_A」・・・GetLayoutObjectAttribute ( "A" ; "isFrontTabPanel" )
「最前面タブ判定_B」・・・GetLayoutObjectAttribute ( "B" ; "isFrontTabPanel" )
「最前面タブ名」・・・Case ( 最前面タブ判定_A = 1 ; "A" ; 最前面タブ判定_B = 1 ; "B" )
としたのですが、タブを切り替えても「最前面タブ判定_A」が常に 1 のまま変わりません(なので「最前面タブ名」も A のままです)。
恐縮ですが修正点をご教示いただけないでしょうか。どうぞよろしくお願いいたします。
Offline
タブの文字列ではなくて、各タブにインスペクターから自分でオブジェクト名を付けてくださいね。
計算フィールドを非保存にしないとダメでしょう。
それでも変更時にそのフィールドを再表示しないとダメかも。
「最前面タブ名」だけでも計算できるでしょう。
普通スクリプトで使うものでしょうね。
タブパネルにスクリプトトリガを設定できますよ。
Offline
とおりすがりさま、チポさま、
ありがとうざいます。スクリプトにしたらうまく動きました。
が、トリガがうまく動作しません。どのトリガを選べばいいでしょうか?(一応全部試したのですが、どれも動きません…。)手動でスクリプトを実行すれば動作します。タブコントロールにトリガを設定していますが、これが間違っているのでしょうか?
スクリプトの内容は、ざっくりですが、
If [GetLayoutObjectAttribute ( "A" ; "isFrontTabPanel" ) = 1]
フィールド設定[テーブル::フィールド;"A"]
Else If [GetLayoutObjectAttribute ( "B" ; "isFrontTabPanel" ) = 1]
フィールド設定[テーブル::フィールド;"B"]
End If
という感じです。
よろしくお願いいたします。
Offline
すみません、OnObjectModifyで無事に動作しました。
この度は大変有用なアドバイスをいただき誠にありがとうざいました。
Offline
Pages: 1
[ Generated in 0.006 seconds, 7 queries executed - Memory usage: 513.67 KiB (Peak: 518.58 KiB) ]