変更スクリプトの番号編集ボックス私はJSLとApplicationBuilderを初めて使用するので、我慢してください。
一連のペアの番号編集ボックスを持つダイアログボックスを作成しようとしています。各ペアの1つは「開始」時間を表し、もう1つは対応する「終了」時間を表します。
ユーザーが「終了」時間より後の「開始」時間、または「開始」時間より前の「終了」時間を入力する状況を回避したいと思います。
私が最初に考えたのは、各ボックスに「変更時」スクリプトを追加することでした。「開始」ボックスには次のようなものがあります。
If( (Start << Get) > (End << Get),
End << Set( Start << Get )
);
「終了」ボックスは次のようになります。
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>