問題いくつかの入力値に基づいて数値の表を表示するカスタム計算機を作成する必要があります。
解決Number Edit Boxes を使用して値を取得し、Set Function メソッドを使用して JSL を Number Edit Boxes にアタッチし、値が変更されたときにテーブルを再計算します。 テーブル ボックスを使用して、数値の列を保持します。 値が変更されたときに数値の列を再構築します。
if( jmpversion()<"13", Open Log(1); throw("JMP 13 以上が必要")); // 編集ボックスを設定するにはデフォルト値が必要ですborrow = 1e5;年 = 2; 4 月 = 15; cur = "米ドル"; // "EUR" New Window( "table demo", Border Box( Left( 5 ), Right( 5 ), bottom( 5 ), // このボックスは薄緑を数ピクセル拡張します V List Box( // ボーダーボックスすべてを保持するには、vlist のように 1 つの子が必要です。 「興味深い」タイトルの入力フィールド V List Box( // 3 つの垂直入力フィールドとそのラベル H List Box( // フィールドとそのラベル Number Edit Box( // フィールド借用、 < 12, 月 -= 12; 年 += 1; ); 日付[i ] = Date DMY( day, month, year ); month += 1; ); While( !Is Empty( tb << child ), (tb << child) << delete ); // 以前のデータがあれば削除する// 新しい列をテーブルに追加します tb << append( Number Col Box( "Due Date", days, <私は財務担当者ではありません。 数式を正しく使用しているとは思わないでください。 緑の色合いを選択し、いくつかのテーブル ボックス パラメータを指定して、テーブルを魅力的にしました。 私はアーティストではありません。 緑のスペーサー ボックスは、AutoStretching および MaxSize オプションを使用して、ページを広くすることなく、色の良いバーを作成し、ページを塗りつぶします。 freshen() 関数は 3 つのデータ入力フィールドすべてから呼び出され、どのフィールドが変更されたかは気にしません。 もっと複雑なことを行うこともできますが、計算が非常に遅い場合を除き、単純にしてください。 テーブルを右クリックしてデータテーブルにすると、データをさらに処理できます。パラメーターをデータ テーブルと共に保存する方法が必要になる場合があります (データ テーブルを作成するための別のボタン)。 パラメータを含むレポートをジャーナル処理することもできます。
関連項目テーブル ボックスの詳細については、[ヘルプ] -> [書籍] -> [スクリプト ガイド] を参照してください。
2021 年の初めにスクリプト作成を開始しましたが、この投稿は非常に役に立ちました。 上記のスクリプトのほとんどをコピーし、自分の電卓用に修正しました。その出力を別のプラットフォームで使用する予定です。
しかし、私は自分が達成したことに完全に満足しているわけではありません。 初めてスクリプトを開いて実行すると、値を入力できる 2 つの数値ボックスが表示されます。

事前に入力された数値ボックスの値の 1 つを変更した場合にのみ、実際に使用したい結果を含む 3 番目のボックスがさらに表示されます。

私が作成したものは、によって提供されたコードに基づいているため、これに遭遇したと思います@Craige_Halesその上。
- 3 番目のボックス (上記の赤丸で囲った部分) が最初から表示されますが、他の 2 つのボックスの入力値に基づいて更新されるようにするにはどうすればよいですか?
- 小さな計算機を構築するためのより効率的なソリューションはありますか、それとも不必要に複雑なアプローチを使用していますか?
この時点で、私は Scripting Guide と Scripting Index を勉強してきましたが、自分で解決策を考え出すほど強力なスクリプト作成者ではありません。 (ただし、現在自分のコピーにアクセスできないため、「Jump into JMP Scripting」は閲覧しませんでした。)
Names default to here ( 1 );
// some default values for the first two number edit boxes
CurrentConc_wt% = 45.00;
LowestAcceptConc_wt% = 40.00;
New Window( "Calculating Concentration acceptance limit",
Border Box(Left( 5 ), Right( 5 ), bottom( 20 ),
V List Box(
Text Box("Some comment")
)
),
Border Box(Left( 5 ), Right( 5 ), bottom( 20 ),
V List Box(
Text Box("Instructions: [add instructions here later]")
)
),
Border Box(Left( 5 ), Right( 5 ), bottom( 5 ), // added this because I copied this code and left in there, just in case...
V List Box( // border boxes need a single child, like a vlist, to hold everything
Border Box(Left( 5 ), Right( 5 ), bottom( 5 ), // border for data entry boxes
H List Box(
V List Box(
Border Box(Left( 5 ), Right( 5 ), bottom( 5 ),
H List Box(
Number Edit Box(
CurrentConc_wt%,
<<SETFORMAT></SETFORMAT>
これを詳しく見るには、もう少し時間がかかります。 しかし、何かがすでにクリックされたかのようにすべてのボックスを初期化するためにあった、元の JSL の最後にある freshen() の呼び出しを見逃しているだけかもしれません。
ありがとう、それは簡単な修正でした。 結局満足する理由があるのかもしれません。