[JMP17.0.0]
私が取り組んでいるプロジェクト ファイルには多くのデータ テーブルが含まれており、それぞれのデータ テーブルには、出力としてジャーナルを生成するために使用する比較的長時間実行されるスクリプトが含まれています。別のテーブルに個別のスクリプトを用意し、それぞれのテーブル スクリプトを呼び出し、個々の仕訳帳を 1 つの仕訳帳にまとめて最終レポートを作成します。[おそらくこのアプローチをもっとクリーンにできたはずですが、私はフルタイム (またはパートタイム) のプログラマーではありません。]
個々のテーブル スクリプトの実行後に実行の進行状況を追跡するために、ある種の「X/Y が完了しました」更新進行状況バー/メッセージ ボックスを実装したいと考えていました。
これは、私がどのようにして現在の解決策に辿り着いたのかについての物語です。
TL;DR – 一人で賢いアプローチを考え出すのに 1 日を費やした後、私は Caption() を見つけました。これが最も簡単なことでしょう。
しかし、プロジェクト環境内でウィンドウをどのように操作できるかについて、一般的な質問がまだいくつかありますので、興味があればお付き合いください。
ディスカッションを検索中に見つけた素晴らしい実装アイデアがいくつかあります。
https://community.jmp.com/t5/Uncharted/Progress-Bar/ba-p/21160
https://community.jmp.com/t5/Uncharted/Progress-Bar-with-Cancel-Button/ba-p/433560#U433560
https://community.jmp.com/t5/Discussions/Suggestion-on-how-to-script-a-small-update-progress-window-for/mp/250419
ただし、プロジェクト環境内でこれらのソリューションを実装しようとすると、作成される新しい進行状況バーは常にプロジェクト内の新しいタブとして作成されます。 一連の次のスクリプトが開始されると、進行状況バー ウィンドウはスクリプトに関連付けられた後続のデータ テーブル操作によって埋もれてしまうため、更新された進行状況メッセージは表示されません。
一般的な質問 #1: モーダル ウィンドウではなく、メッセージ ボックスとして「ポップアウト」ウィンドウを作成する方法がわかりません。私の理解では、モーダルウィンドウはユーザーがウィンドウを操作するまでスクリプトを一時停止しますが、これは私が望んでいないことです。新しい非モーダル ウィンドウを新しいタブとしてではなく「ポップアウト」として作成する方法について何か足りないことがありますか?
[改めて、Caption() というものがあることに今気づきました。しかし、プロジェクト内のすべての新しいウィンドウは、ポップアウト ウィンドウではなく新しいタブとして開く必要があるのかどうかという一般的な疑問がまだ残っています。]
一般的な質問 #2: そこで私は考えました…この新しく作成したプログレス バー ウィンドウをプロジェクト レイアウト内の別の場所にドッキングして、アクションの残りの部分から切り離す方法があるかもしれません – 例: New Window() << Dock( "右")。しかし、そのようなものは見つかりませんでした。ウィンドウのドッキング位置をスクリプトで指定する方法はありますか?
それから私は、プロジェクトのレイアウトがどのように機能するのか、そしてどのようにスクリプト化できるのかを学ぶのに多くの時間を費やしました。その練習から私はたくさんのことを学びました。最終的に、プロジェクトのレイアウトを一時的に変更して、「最近のファイル」ウィンドウを、私が探していることを実行するカスタムの「進行状況更新」ウィンドウに置き換えてから、「最近のファイル」に戻すスクリプトを思いつきました。 " 窓。ご想像のとおり、これはかなり不器用なスクリプトですが、仕事はきちんと完了します。できる限り一般化して、それがどのように機能するか知りたい人のためにここに添付しました。
その日のある時点で、個別のスクリプトによって作成された新しいウィンドウを強制的に非表示にして、プログレス バー ウィンドウを最前面に表示することで、これを機能させる方法があるかもしれないことに気づきました。でも、それを前もって考えていたらもっと良かったでしょう。この時点で、このオプションを実現するには (可能であれば) スクリプトを数百回編集する必要があります。
こうしたすべてを経て、私は今朝この話をするために出社し、ほぼすぐに Caption() に出会いました。これは基本的に、私がやりたかったことをすべて 2 行の簡潔なコードで実行します。もっと早くそれに気づいていればよかったのにと思います。テキストだけでなく、真の進行状況バーを本当に作りたければ、おそらく Caption() は機能しないのではないかと思います。しかし、これをそれほど派手にする必要はありませんでした。
ご聴取ありがとうございました。
ジョエル