会話
対話とは二人の間の会話です。 二人はよくこんな会話をします。
この 2 人は、会話中に他のことに気を配ることができる方法で情報を交換しています。
場合によっては、2 人が会話モードに切り替わり、集中力が高まります。
このモードでは、副操縦士はソリティア ゲームを無視し、パイロットはサンドイッチを無視します。
ダイアログ ボックスは、人間がコンピュータと会話するためのウィンドウです。 JMP には、モードレスとモーダルの 2 種類のダイアログ ボックスがあります。 検索/置換ダイアログはモードレスです。開いたままになり、パイロットがエコノミーから食事に切り替えたのと同じくらい簡単にウィンドウ間で焦点を切り替えます。 JMP の保存ダイアログはモーダルです。 JMP がファイル保存モードに入ると、ファイルが保存されるか保存がキャンセルされるまで、他に何も妨げられることはありません。 JSL は、モードレスまたはモーダルのカスタム ダイアログを作成して、情報を提供し、応答を得ることができます。
答えを得る
モーダル ダイアログ ボックスの寿命:
項目 1 のツリーの構築は、多くの場合、New Window 関数への引数として実行されます。 項目 2 と 3 は新しいウィンドウ機能です。 これはアラート ボックスのモーダル ダイアログです。
rdata = New Window( title, <<MODAL></MODAL>
<
Just thought you should know...Just thought you should know...Just thought you should know...Just thought you should know...知っておくべきだと思ったのですが...
この小さなウィンドウの双方向ダイアログは非常にシンプルです。
返すデータがありません。 New Window 関数は値を返します。 OKボタンを押したかどうかを示します
{Button( 1 )}
または、OS が提供する閉じるボタンを使用してウィンドウを閉じました。
{Button( -1 )}
1 つの要素を含むリストを返します。 次を使用してキャンセルと OK をテストできます。 rdata["ボタン"] -1 または 1 になります。 ダイアログに「CANCEL」ボタンを配置していないので、おそらく気にしないでしょう。
昔、JMP はウィンドウの内容 (表示ボックス) を と呼ばれる内部構造に入れました。ごみOS にウィンドウを閉じるよう要求する前に。ごみ時間の経過とともに進化して多くの問題を解決し、時には意図しない副作用を引き起こすこともあります。 副作用の 1 つは、モーダル ダイアログの表示ボックスを JSL で使用できるようにすることでした。短いダイアログが閉じられた後、一部のユーザーはこのようにしてモーダル ダイアログから回答を取得しました...文字通りゴミ箱から回答を取り出しました。
問題点ごみどれくらい充填するか、いつ空にするかが中心になります。 JMP の初期のバージョンでは、次のウィンドウが表示されたときにゴミ箱が空になったり、そのバリエーションがいくつかありました。 ゴミ箱を空にすると、その内容はなくなり、モーダル ダイアログ ボックスの変数も消えます。 ほとんどの場合、それはほとんどうまくいきましたが、さまざまな問題を解決しようとして進化し続けました。 最終的@hecht_jmp最先端のソリューションを JMP に導入し、ゴミ箱の問題を解決しました...ただし、モーダル ダイアログから回答を取得するにはもう少し計画が必要でした。
正しい方法で答えを得る
さらに多くのデータを返したい場合は、次のように要求する必要があります。 <<結果を返す:
rdata = New Window( "modal dialog test", <<MODAL></MODAL>
It said "Enter your name" before I typed over it.It said "Enter your name" before I typed over it.It said "Enter your name" before I typed over it.It said "Enter your name" before I typed over it.上書きする前に「名前を入力してください」と表示されました。
{answer = "クレイジ"、ボタン( 1 )}
使用できますrdata["答え"]後に新しい窓()変数のテキスト ボックスから値を取得するために戻ります答え。 (最初にキャンセルテストを行ってください。)
リストは連想配列のようなものですか?
上記のすべての例はリストを返します。 リスト内の項目はすべて、単純な代入ステートメントまたはある種の関数呼び出しのように見えます。 JMP のあまり使われていない、あまり理解されていない機能は、通常の数値インデックスではなく、これらの名前を使用してリストに添え字を付けることです。
result = New Window( "Tell us about yourself", <<MODAL></MODAL>
Bob is about to press OKBob is about to press OKBob is about to press OKBob is about to press OKボブは OK を押そうとしています
結果の値は次のようになります。
{名前 = "ボブ"、タイトル = "プログラマー"、Button( 1 )}
または、ボブがキャンセルした場合、
{名前 = "ボブ"、タイトル = "プログラマー"、ボタン( -1 )}
If( result["Button"] == 1, Write( Eval Insert( "\!n\[^result["name"]^ is a ^result["title"]^]\" ) ) , // else Write( "\!nthe dialog canceled." ) );
ボブはプログラマーです
リストする連想配列と少し似ていますが、順次検索で行われます。 (連想配列が必要な場合は作成してください。 このリスト動作は使用しないでください...これは代替手段としては不十分です)。
モーダルダイアログのセマンティクス
ユーザーがモーダル ダイアログでキャンセル ボタンを押したとき、何も変更されないことを期待します。 モーダル ダイアログ内の JSL は、プログラムの残りの部分の変数を変更せずにダイアログを操作する必要があります。 もっと大きな例を次に示します。レポートを起動するためのモードレス ダイアログがあります。
You can work in other windows while this window is open; it is a modeless dialog.You can work in other windows while this window is open; it is a modeless dialog.You can work in other windows while this window is open; it is a modeless dialog.You can work in other windows while this window is open; it is a modeless dialog.このウィンドウが開いている間、他のウィンドウで作業できます。これはモードレスダイアログです。
[レポート作成] ボタンを押すたびに、別のウィンドウが開きます。
A report showing the values from the modeless launcher.A report showing the values from the modeless launcher.A report showing the values from the modeless launcher.A report showing the values from the modeless launcher.モードレス ランチャーからの値を示すレポート。
検証ルーチンを含むモーダル ダイアログを開く [パラメーターの設定] ボタンもあります。 このキャンセル ボタンは、上記のランチャーに変更を適用しません。
The validation routine opens yet another modal dialog.The validation routine opens yet another modal dialog.The validation routine opens yet another modal dialog.The validation routine opens yet another modal dialog.検証ルーチンにより、さらに別のモーダル ダイアログが開きます。
// here's a simple modal window. It provides a warning, but no data is returned. alert = Function( {title, text, icon = "error"}, New Window( title, <<MODAL></MODAL>
モーダル ダイアログとは何か、より良いダイアログを作成する方法。