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

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

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

You are not logged in.

Announcement

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


#1 2021-11-03 13:42:42

37
Member

【FMP19】「ユーザーによる強制終了を許可」のコントロールについて。

FileMaker Pro 19.3.2, macOS Monterey 12.0.1

ループ処理を行うスクリプト(ループスクリプト)があり、処理内容にバグ、重い処理が入っていた場合に、
ユーザーが対応できるように、そのスクリプトの最初に「ユーザーによる強制終了を許可」をオンにしてあります。

ただ、上記のループスクリプトを実行させる前に
処理用のレイアウト等の設定をスクリプト(前処理スクリプト)で行なっており、
この前処理スクリプト内で、上記のループスクリプトを実行させています。

事後処理も、この前処理スクリプトでおこなっており、
途中で終了されないように、この前処理スクリプトでは「ユーザーによる強制終了を許可」をオフにしてあるのですが、
強制終了をおこすと、この前処理スクリプトも終了となってしまい、
事後処理が行われず、ループ処理中のレイアウトが表示されてしまいます。

ユーザーによる強制終了を行わせたあとに、自動でスクリプトを実行させる方法はありますでしょうか?

ご教示よろしくお願いいたします。

Last edited by 37 (2021-11-04 09:07:07)

Offline

#2 2021-11-04 09:29:51

himadanee
Guest

Re: 【FMP19】「ユーザーによる強制終了を許可」のコントロールについて。

簡単な実験してみましたが、「[ユーザによる強制終了を許可] スクリプトステップが影響するのは、このスクリプトステップが実行するスクリプトおよびすべてのサブスクリプトです。」て書いてあるにもかかわらず、サブスクリプトを強制終了すると呼び出し元に戻りませんね。
バグかな?

昔はマウスカーソルにESCが出てるときにESCキーを押すと「すべてのスクリプトを中断しますか」っていうダイアログが出てた気がするんだけど、記憶違いかなあ?
どっちにしても、そのユーザーの選択で中断したら、「すべて」なので、呼び出し元に戻るわけではなかった気がするけど...

#3 2021-11-04 11:42:57

Shin
Member

Re: 【FMP19】「ユーザーによる強制終了を許可」のコントロールについて。

esc か cmd+. でスクリプトが中断できましたよね。FM6までかな。
全てのスクリプトが停止していたので、その仕様のままだと思います。英語ヘルプもサブスクリプトに影響すると書いてあるので、記述の間違いなのでは。

Offline

#4 2021-11-04 12:01:33

Moz
Member

Re: 【FMP19】「ユーザーによる強制終了を許可」のコントロールについて。

親スクリプトがユーザ操作(esc等)で中断されると、サブスクリプトも中断されますね。
逆にサブスクリプトが中断されても、親スクリプトは中断されません。

※親スクリプトで[ユーザによる強制終了を許可](オフ)にしても、
サブスクリプトで[ユーザによる強制終了を許可](オン)にすると、
サブスクリプトを抜けたときに親スクリプトは[ユーザによる強制終了を許可](オン)になります。
(この動きは正しいのか?)

質問のケースはこちらではないかと。
escを1回だけ触れるように押す(ちょっとでも長めに押すと親スクリプトも中断される)と戻ることが確認できるかと。

Offline

#5 2021-11-04 12:48:31

37
Member

Re: 【FMP19】「ユーザーによる強制終了を許可」のコントロールについて。

himadaneeさん
Shinさん
Mozさん

重鎮の皆さんにご確認いただいたようで、大変ありがとうございます。
私もMozさんのおっしゃるような印象を持っていたので、
下記のMain()、_Loop()2つのスクリプトを用意してテストしてみました。

私のESCの押し方にも問題があるのかもしれませんが、
何度試しても、Endのカスタムダイアログが表示されません。
ちなみに⌘+.でも同じ挙動でした。

一時的なバグならよいのですが、皆さんの感触だと、以前からも同じ動きを
していそうなので、あまり解決策はない、と考えた方がよいのでしょうか?
引き続き、ご意見をいただければと思います。よろしくお願いいたします。


Main()

ユーザによる強制終了を許可 [ オフ ]
カスタムダイアログを表示 [ "Start" ; "開始しました。" ] 
スクリプト実行 [ 指定: 一覧から ; 「_Loop()」 ; 引数:    ]
ユーザによる強制終了を許可 [ オフ ]
カスタムダイアログを表示 [ "End" ; "終了しました。" ] 

_Loop()

ユーザによる強制終了を許可 [ オン ]
Loop
	Exit Loop If [ Let ( [   $counter = $counter + 1;   $wait = 0 ];   1000 < $counter ) ] 
	Loop
		Exit Loop If [ Let ( [   $wait = $wait + 1 ];   1000 < $wait ) ] 
	End Loop
	新規レコード/検索条件
End Loop

Last edited by 37 (2021-11-04 12:50:00)

Offline

#6 2021-11-04 13:15:18

himadanee
Guest

Re: 【FMP19】「ユーザーによる強制終了を許可」のコントロールについて。

>サブスクリプトを抜けたときに親スクリプトは[ユーザによる強制終了を許可](オン)になります。
ああ、なるほど。エラー処理と同じで、スクリプト単位で元に戻ったりはしないってことですか。それは、ありそうですね。

しかし、
>escを1回だけ触れるように押す(ちょっとでも長めに押すと親スクリプトも中断される)と戻ることが確認できるかと。
これは確認できませんでした。うちはWindowsだからかな?
キーを押すのはリピート(押しっぱなしで2回目以降の連続打鍵として認識)するまでにある程度余裕があるので、間違えて2回押してる状態には簡単にはなりません。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 516.86 KiB (Peak: 521.4 KiB) ]