正確に新しい window() を正確な状態で再作成します<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />x 個のタブとチャート(その他のもの)を含む動的な new window() を作成しています。ウィンドウを正確に再作成する Eval(dt << Get Script) のようなものはありますか?すべてのボタンの機能が完全に維持され、実際にどこにいたのかがわかります。
現時点では、これを実行しても、eval(nw<
編集* 明確にするために。中に何が入っているかを正確に知らずにウィンドウを再作成しようとしています。 これは、私が話していることを示すために私が思いついた例です。
デフォルトの名前はここにあります( 14 );
cwd =ファイルパスを変換する( 「。/」 );
新しい窓( "テスト" 、
リストボックス(
TB =タブボックス(
「タブ1」 、
分電盤ボックス( 「タブ1」 、
ポンド =リストボックス(ファイルディレクトリ( "$SAMPLE_DATA" ))、
ボタンボックス( "開ける" 、
ファイル = (lb <<選択してください)[ 1 ];
dt =開ける( "$SAMPLE_DATA\" ||ファイル)
)
)、
)
)、
リストボックス(
ボタンボックス( "戻る" 、TB<<選択したものを設定((TB <<選択してください)- 1 ))、
ボタンボックス( "次" 、
新しいタブ =評価(other_boxes[(tb<<選択してください)]);
TB<<追加( "タブ" 、 新しいタブ);
TB<<選択したものを設定((tb<< GetSelected )+ 1 )
)
)
);
その他のボックス = {
パネルボックス( 「空白、なぜなら…理由は?」 )、
パネルボックス( 「列名」 、
コリストボックス(dt、すべて)
)
};
一般的なコンセンサスは「ノー」のようです。したがって、回答済みとしてマークします。
Re: 正確に新しい window() を正確な状態で再作成しますありがとうございます。楽しむ。
Re: 正確に新しい window() を正確な状態で再作成しますごめんなさい、ふざけて言ってました。あなたがビデオゲームを作っているわけではないことは知っていました。
次に、私の例は方法論を示しており、スタンドアロンです。私はあなたのために魔法のボタンを作ったわけではありません。方法論を盗むだけではだめです。私のコードをあなたのコードに放り込んで、それが機能することを期待できるとあなたが考えていたのには笑ってしまいます。しかし、答えとしては、右側のウィンドウは決して変化せず、コードは毎回そのウィンドウを正確に複製しているように見えます。上から下まで比較する必要があります。
私はこれらのフォーラムで人々を助けるために報酬をもらっていないので、もう我慢できません。戻って実際にコードを読んで、それが何をしているのかを理解することをお勧めします。ご冥福をお祈りします。
Re: 正確に新しい window() を正確な状態で再作成しますありがとう、これは便利ですが、選択された値のみを取得します。ウィンドウ自体の複製をさらに探しています。
Re: 正確に新しい window() を正確な状態で再作成しますいいえ、ビデオゲームを作っているわけではありません。したがって、類似という言葉が使われます。 以下に例を示します。
デフォルトの名前はここにあります( 14 );
cwd =ファイルパスを変換する( 「。/」 );
新しい窓( "テスト" 、
リストボックス(
TB =タブボックス(
「タブ1」 、
分電盤ボックス( 「タブ1」 、
ポンド =リストボックス(ファイルディレクトリ( "$SAMPLE_DATA" ))、
ボタンボックス( "開ける" 、
ファイル = (lb <<選択してください)[ 1 ];
dt =開ける( "$SAMPLE_DATA\" ||ファイル)
)
)、
)、
ボタンボックス( 「再創造」 、
タブカウンター = 1 ;
テキストリスト = { 「」 };
含む(CWD|| 「/recreateWindow2.jsl」 )
)
)、
リストボックス(
ボタンボックス( "戻る" 、TB<<選択したものを設定((TB <<選択してください)- 1 ))、
ボタンボックス( "次" 、
新しいタブ =評価(other_boxes[(tb<<選択してください)]);
TB<<追加( "タブ" 、 新しいタブ);
TB<<選択したものを設定((tb<< GetSelected )+ 1 )
)
)
);
その他のボックス = {
パネルボックス( 「空白、なぜなら…理由は?」 )、
パネルボックス( 「列名」 、
コリストボックス(dt、すべて)
)
};
これを実行すると、再作成を押したときに得られるものと同じように実行すると、次のような結果が得られます。

これは、データ テーブルを選択して開き、[次へ] を押した後のものです。

ここでもう一度「次へ」を押します。

次に、左と右の画像の違いをマークしてもらいます。私がこれがうまくいかないと言うのは、私がそれを試したからです。あなたが作業と呼ぶものやスクリプトの使用方法を私が誤解していない限り。しかし、私の期待は、右側が左側とまったく同じになることです(適切なデータテーブルを開いたと仮定して)。それだけでなく、すべてのタブのすべてのボタンも機能するはずです。
Re: 正確に新しい window() を正確な状態で再作成します申し訳ありませんが、あなたがビデオゲームを開発しているとは知りませんでした。そのため、最初はゲーム エンジンの構築に集中することをお勧めします。その後、状態を保存するためにゲーム エンジンを構築するのは簡単です。
このフォーラムを読んで、ウィンドウを再作成する簡単な方法を求めているが、その方法論を理解していない人のために。堅牢性とシンプルさを示す、より複雑な例を添付しました。
recreateWindow.jsl を実行すると、recreateWindow2.jsl へのパスの入力を求められます。
これらのファイルの実行についてご不明な点がございましたら、お知らせください。
Re: 正確に新しい window() を正確な状態で再作成します古い任天堂のゲームでエミュレータを使用したことがあるかどうかはわかりませんが、これはこれに似たセーブステートと呼ばれるものを使用します。
私が欲しいのは状態を保存することです。 自分がどのレベルにいるのか、画面上のどこにいるのかなどを正確に保存するもの。ゲームを再起動するだけでよいという指示は私が探しているものではありません。
この方法は別の問題を解決します。それがこれにどのように役立つのかわかりません。
同意しないことには同意すると思います。 悪気はないつもりだった。もともと私の説明が正しくなくて申し訳ありません。
Re: 正確に新しい window() を正確な状態で再作成しますうまくいくものがあれば、それ以上進めるつもりはありません。しかし、あなたが上で言ったことを明確にさせてください。
これ方法するユーザーがタブ 1 に指定した情報がタブ 4 (または任意のタブ) を作成するために与えられるため、これは役に立ちます。
スクリプトを再実行するだけの場合、ユーザーはタブ 1 ~ 3 を経て、元のタブ 4 に戻る必要があります。それは本当ですが、これは当てはまりません方法、これは例を適用するだけです。
「現在、必要な関数をすべて取り込むスクリプトを作成し、それを JSL に保存する必要があります (オンザフライで作成する必要がある点を除けば、あなたが言っていることとほぼ同じです)。」
すでに作成されているのに、なぜその場で作成する必要があるのでしょうか? 別名、1 回ビルドできるスクリプトがあるのに、2 回ビルドするために 2 番目のスクリプトをビルドする必要はありません。
Re: 正確に新しい window() を正確な状態で再作成します申し訳ありませんが、私の問題の言い方が間違っていたようです。タブ 1 でユーザーが指定した情報がタブ 4 (または任意のタブ) の作成に与えられるため、この方法は私には機能しません。スクリプトを再実行した場合、ユーザーはタブ 1 ~ 3 を経て、元のタブ 4 に戻る必要があります。また、タブは指定されておらず、何でも構いません。現在、必要なすべての関数を取り込むスクリプトを作成し、それを JSL に保存する必要があります (その場で作成する必要がある点を除けば、あなたが言っていることとほぼ同じです)。少し難読化するだけです。もっと良い方法がない場合は対処します。ありがとう。
Re: 正確に新しい window() を正確な状態で再作成します選択されたタブと、テキスト編集ボックス、数値編集ボックス、コンボ ボックス、およびリスト ボックスの値をキャプチャし、ウィンドウを閉じるときにそれらをグローバル 2 次元配列に保存するスクリプトを作成しました。 ウィンドウが開くと、値はウィンドウを閉じたときにキャプチャされた値に設定されます。
機能を示すためにスクリプトにサンプル ウィンドウを含めましたが、getValues 関数と setValues 関数は、状態をキャプチャし、スクリプトが再度実行されるときに状態をリセットするために使用されます。
制限事項:
1. このコードは、動的に作成された表示ボックスを考慮していません。 それを考慮してコードを調整する必要があります。
2. このコードはプラットフォームを再実行しません。 そのために必要に応じてコードを調整できます。
3. JMP を閉じると、状態は失われます。 ただし、配列をグローバル変数ではなくテキスト ファイルに保存すると、JMP のすべてのインスタンスから値を取得できます。
4. このスクリプトにはチェック ボックスを実装していません (および忘れているその他の表示ボックスも)。
スクリプトが添付されています。
スクリプトについて質問がある場合はお知らせください。
Re: 正確に新しい window() を正確な状態で再作成します何を言えばいいのか分かりません。私の解決策はウィンドウを正確に再作成します、kすべてのボタンの機能が完全に損なわれず、現在どのタブにいるのか、OP で要求されているすべてのことを知ることができます。
さらに、Eval(nw<Re: 正確に新しい window() を正確な状態で再作成します
私はスクリプトを使用してそれを作成していますが、ユーザーはウィンドウの外観 (どのデータテーブルを開くかなど) を選択します。また、状態保存を押したときにタブ (2) にいる場合、タブ (2) が現在選択されており、すべてのレポートとテーブルが同じ位置で開いた状態で、状態保存に戻ることができるようにしたいと考えています。現在、関連するすべての関数を文字列に取り込み、それを eval(parse()) する関数を作成 (作成しようとしています) しています。Eval(nw<Re: 正確に新しい window() を正確な状態で再作成します
スクリプトを使用して動的ウィンドウを作成したとします。その場合は、ボタンでスクリプトを再度実行するだけで済みます。
デフォルトの名前はここにあります( 1 ) ;
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
新しい=新しい窓( "テスト" 、 vリストボックス( "スクリプト" 、
二変量( Y ( :身長) 、バツ( :重さ) ) ;
分布(
継続的な配布(
カラム( :身長) 、
要約統計量のカスタマイズ(平均( 0 ) )
) 、
継続的な配布(
カラム( :重さ) 、
要約統計量のカスタマイズ(平均( 0 ) )
)
) ;
ボタンボックス( 「ウィンドウを再作成」 、
含む( 「パス\この\スクリプト\recreateWindow.jsl」 ) ;
)
)
) ;
Re: 正確に新しい window() を正確な状態で再作成しますセッション スクリプトは私が望むものではないという点では正しいでしょう。それを試してみると、開いているデータテーブルが開かれるだけです。新しい window() を作成しようともしません。
また、 eval(nw<まあそれが機能しない理由は理にかなっています。すべてがどうなるかわからない場合にすべてを再作成する必要があるのではなく、簡単な解決策があることを期待していました。
もう少しだけ希望を持ち続けてみます。
私が何を求めているのかを明確にするために:
ボックス1 =パネルボックス( 「1」 、テブ =テキスト編集ボックス( "これはテストです" )、ボタンボックス( 「プリント」 、印刷する(テブ<<テキストの取得)));
ボックス2 =パネルボックス( 「2」 、テブ =テキスト編集ボックス( "これはテストです" )、ボタンボックス( 「プリント」 、印刷する((テブ<<テキストの取得)|| 「チャーリー」 )));
ボックス3 =パネルボックス( 「3」 、テブ =テキスト編集ボックス( "これはテストです" )、ボタンボックス( 「プリント」 、印刷する((テブ<<テキストの取得)|| 「スージー」 )));
nw =新しい窓( "例" 、
TB =タブボックス()
);
もの =エバリスト({ボックス1, ボックス3});
のために(i= 1 、i<=ナイアイテム(もの)、i++、
TB<<追加(文字(i)、もの)
);
nw<<スクリプトの取得
/* 戻り値
V リストボックス(
V リストボックス(
タブボックス(
タブページボックス(
タイトル( "1" )、
パネルボックス(テキスト編集ボックス(「これはテストです」)、ボタンボックス)
)、
タブページボックス(
タイトル( "2" )、
パネルボックス(テキスト編集ボックス(「これはテストです」)、ボタンボックス)
)
)
)
)
*/
ウィンドウのタイトルやボタンボックスのスクリプトはありません。また、実行しません。
Re: 正確に新しい window() を正確な状態で再作成します残念ながら、 "あセッションスクリプトほとんどの機能を捕らえます」では、ヴィンスが望むものを捕らえているようには見えません。動的なタブ ボックスは適切に処理されません。上記のスクリプトを修正したバージョンで、それを実行し、セッション スクリプトを保存して調べました。タブ ボックスはセッション スクリプトには引き継がれません。
初期スクリプト
デフォルトの名前はここにあります( 1 ) ;
dt =開ける( 「$SAMPLE_DATA/big class.jmp」 ) ;
新しい窓( "テスト" 、タブボックス( 「タブ1」 、 vlb = V リストボックス() ) ) ;
もし(モッド(日(今日() ) 、 2 ) == 0 、
×1 = V リストボックス(
タブボックス(
「二変量ファースト」 、
ビブ=二変量( Y ( :身長) 、バツ( :重さ) ) 、
距離=分布(名目分布(カラム( :年) ) )
)
) 、
×1 = V リストボックス(
タブボックス(
「配布第一」 、
距離=分布(名目分布(カラム( :年) ) ) 、
ビブ=二変量( Y ( :身長) 、バツ( :重さ) ) ;
)
)
) ;
vlb <<追加する( ×1 ) ;
セッションスクリプト
開ける( 「C:\Program Files\SAS\JMPPRO\12\Samples\Data\Big Class.jmp」 、ウィンドウの境界( 275 、 484 、 1288 、 1141 ) ) ;
新しい窓( "テスト" 、
V リストボックス(
分布(名目分布(カラム( :年) ) ) 、
二変量( Y ( :身長) 、バツ( :重さ) )
)
) <<ウィンドウの移動( 722 、 15 ) <<サイズウィンドウ( 488 、 1025 ) <<ウィンドウアイコンの設定( 「レポートファイル」 ) ;
Re: 正確に新しい window() を正確な状態で再作成しますあセッションスクリプトJim の例のような複合レポートを含む、カスタム レポートと対話型の変更のほとんどの機能を捕捉します。 ただし、気にしない他のウィンドウやテーブルを再作成するためのコードも節約できます。
セッション スクリプトは、いつでも保存できます。ファイルメニュー。
JMP を終了するときにセッション スクリプトを常に保存するように環境設定で設定することもできます。
Re: 正確に新しい window() を正確な状態で再作成しますJMP は、個々のプラットフォームを再作成するためのスクリプトを非常にうまく作成できますが、それらのプラットフォームで構成されるユーザー作成の表示ウィンドウにはそれが転送されません。
以下のスクリプトは、JMP がユーザー定義の表示ウィンドウから使用可能なスクリプトを作成しないことを示す非常に単純な例です。
デフォルトの名前はここにあります( 1 ) ;
dt =開ける( "$SAMPLE_DATA/Big Class.jmp" ) ;
新しい=新しい窓( "テスト" 、タブボックス( "スクリプト" 、
二変量( Y ( :身長) 、バツ( :重さ) ) ;
分布(
継続的な配布(
カラム( :身長) 、
要約統計量のカスタマイズ(平均( 0 ) )
) 、
継続的な配布(
カラム( :重さ) 、
要約統計量のカスタマイズ(平均( 0 ) )
)
) ;
)
) ;
rr =新しい<<スクリプトを取得;
見せる( rr ) ;
評価( rr ) ;