変更スクリプトの数値編集ボックス私は JSL と Application Builder を初めて使用するので、ご理解ください。
一連のペアになった数値編集ボックスを持つダイアログ ボックスを構築しようとしています。各ペアの 1 つは「開始」時間を表し、もう 1 つは対応する「終了」時間を表します。
ユーザーが「終了」時刻よりも後の「開始」時刻を入力したり、「開始」時刻よりも前に「終了」時刻を入力したりする状況を避けたいと考えています。
私が最初に考えたのは、「開始」ボックスに次のような「変更時」スクリプトを各ボックスに追加することでした。
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
「end」ボックスは次のようになります。
If( Start << Get > End << Get,
Start << Set( End << Get )
);
しかし、これは機能しません(望ましくない状態が発生しても何も起こらないという意味で)。
おそらくかなり愚かなことをしていると思いますが、助けていただければ幸いです。
Re: 変更スクリプトの番号編集ボックスみんな助けてくれてありがとう!!!
Re: 変更スクリプトの番号編集ボックスApplication Builder を習得するには時間がかかりますが、それだけの価値はあります。私は JMP バージョン 10 からこれを使用していますが、バージョンが上がるごとに改良されています。JMP Discovery 2013 JSL Roundtable で私が行ったプレゼンテーションを添付しました。これは役立つかもしれません。
Re: 変更スクリプトの番号編集ボックスはい、保存したアプリ ビルダー ファイルをテキスト エディターで開くことはできますが、ファイルを編集するためにサポートされている唯一の方法はアプリ ビルダー GUI です。 (スクリプトを開いたときに何が起こるかを知りたい場合は、一見の価値があります。)
ここでは、Web 上のリソースへのリンクをいくつか紹介します。
https://community.jmp.com/t5/Discovery-Summit-2016/Building-Dashboards-and-Applications-Poster-and-Tutorial/ta-p/22374
[ビデオ]
Re: 変更スクリプトの番号編集ボックス皆様、素晴らしい提案をありがとうございました。 まだすべてを試していませんが、「実際の」仕事から休みが取れたらすぐに試してみます。
それまでのところ、多くの問題の根本は、App Builder (AB) の詳細なドキュメントが見つからないことだと思います。 存在するはずなのですが、見つかりません。 リンクを持っている人はいますか?
たとえば、AB の [プロパティ] メニューの [スクリプト] フィールドが何のためにあるのかわかりませんでした。また、数値編集ボックス (NEB) のドキュメントとの関連付けも行いませんでした。 明らかに、私はここで手探りで進んでいます。
私の混乱のもう 1 つの例は、NEB の AB プロパティ ペインに「増分」入力フィールドが存在しますが、入力を受け付けません。 続けてもいいのですが…
先ほども言いましたが、AB に関する優れたドキュメントと、複雑なモーダル ダイアログ ボックス スクリプトの優れた例があれば良いでしょう。また、AB がインターフェイス用に生成したコードを実際に確認する方法はありますか?
Re: 変更スクリプトの番号編集ボックス以下にその例を示します。JMP 13 を使用して作成されているため、それ以前のバージョンでは動作しない可能性があります。
Re: 変更スクリプトの番号編集ボックス各数値編集ボックスを呼び出すスクリプトを設定する必要があります。簡単な例を作成しました。
start_time_neb : 開始時間の数値編集ボックス
end_time_neb : 終了時刻の数値編集ボックス
各数値編集ボックスを右クリックして、スクリプト > スクリプト(番号は変更されません)。私が追加したスクリプトは次のとおりです。
// This function is called when the number edit value is committed
start_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = this << Get;
end_time_value = end_time_neb << get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The Start Time cannot be after the End Time")
);
this << set(.);
);
);
);
// This function is called when the number edit value is committed
end_time_nebScript=Function({this},{start_time_value, end_time_value},
start_time_value = start_time_neb << get;
end_time_value = this << Get;
if (!is missing(start_time_value) & !is missing(end_time_value),
if (start_time_value > end_time_value,
nw = new window("Error", << modal(),
text box("The End Time cannot be before the Start Time")
);
this << set(.);
);
);
);
Re: 変更スクリプトの番号編集ボックス試してみたいことがいくつかあります:
1. ログ ウィンドウを確認します。何も起こっていないように見えても、手がかりとなるエラーが報告されている可能性があります。
2. コードをできるだけ単純なものにまとめます。これは、何が機能し、何が機能しないかを把握するのに役立ちます。たとえば、これはあなたが説明したように機能するようです:
New Window("Test",
neb1 = NumberEditBox(0),
neb2 = NumberEditBox(0)
);
neb1 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb2 << Set( neb1 << Get )
)
);
neb2 << Set Function(
If( (neb1 << Get) > (neb2 << Get),
neb1 << Set( neb2 << Get )
)
);
Re: 変更スクリプトの番号編集ボックスこれを行うには、(OnChange ではなく) SetFunction 内で開始と終了の両方の NumberEditBox の最小値/最大値を設定します。
New Window( "Example",
Lineup Box( N Col( 2 ),
Text Box( "Work Starts" ),
Text Box( "Work Ends" ),
start_neb = Number Edit Box(
0,
<<SET format=""></SET>