准确地重新创建一个新的窗口()在其确切的状态<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在创建一个动态的新窗口(),其中包含 x 个选项卡和图表(其他内容)。有没有类似 Eval(dt << Get Script) 的东西可以准确地重新创建窗口?保持所有按钮功能完好无损,并有效地知道我在哪里。
现在,如果我这样做,我什至无法使用 eval(nw<
编辑*只是为了清楚起见。我试图重新创建一个窗口,但不知道它里面到底有什么。 这是我想出的例子来展示我正在谈论的内容:
名称默认为此处( 14 );
CW=转换文件路径( “./” );
新窗户( “测试” ,
列表框(
TB=标签框(
“选项卡1” ,
配电箱( “选项卡 1” ,
磅=列表框(目录中的文件( “$SAMPLE_DATA” )),
按钮盒( “打开” ,
文件=(磅<<被选中)[ 1 ];
dt =打开( “$SAMPLE_DATA\” ||文件)
)
),
)
),
列表框(
按钮盒( “后退” , TB<<设置选定((TB <<被选中)- 1 )),
按钮盒( “下一个” ,
新标签=评估(other_boxes[(tb<<被选中)]);
待定<<附加( “标签” , 新标签);
待定<<设置选定((待定<<获取选择)+ 1 )
)
)
);
其他框 = {
面板盒( “空白,因为……原因?” ),
面板盒( “列名称” ,
碰撞盒(dt,全部)
)
};
看来普遍的共识是否定的。所以我将其标记为已回答。
回复:精确地重新创建一个处于精确状态的新窗口()感谢您。享受。
回复:精确地重新创建一个处于精确状态的新窗口()抱歉,我是开玩笑的。我知道你不是在制作电子游戏。
接下来,我的示例展示了一种方法并且是独立的。我没有为你创造一个神奇的按钮。你不能只是窃取一种方法论。让我笑的是,你认为你可以将我的代码放入你的代码中并期望它能够工作。但要回答你的是,右侧的窗口永远不会改变,而且看起来代码每次都准确地复制该窗口。您需要从上到下进行比较。
我没有报酬来帮助这些论坛上的人们,而且我失去了耐心。我建议你回去,实际阅读代码并理解它在做什么。我希望你一切顺利。
回复:精确地重新创建一个处于精确状态的新窗口()谢谢,它很有用,但它只能从中获取选定的值。我正在寻找更多窗口本身的复制品。
回复:精确地重新创建一个处于精确状态的新窗口()不,不是创建视频游戏。因此出现了“类比”这个词。 这是一个例子:
名称默认为此处( 14 );
CW=转换文件路径( “./” );
新窗户( “测试” ,
列表框(
TB=标签框(
“选项卡1” ,
配电箱( “选项卡 1” ,
磅=列表框(目录中的文件( “$SAMPLE_DATA” )),
按钮盒( “打开” ,
文件=(磅<<被选中)[ 1 ];
dt =打开( “$SAMPLE_DATA\” ||文件)
)
),
),
按钮盒( “重新创造” ,
制表计数器 = 1 ;
文本列表={ ”” };
包括(cwd|| “/recreateWindow2.jsl” )
)
),
列表框(
按钮盒( “后退” , TB<<设置选定((TB <<被选中)- 1 )),
按钮盒( “下一个” ,
新标签=评估(other_boxes[(tb<<被选中)]);
待定<<附加( “标签” , 新标签);
待定<<设置选定((待定<<获取选择)+ 1 )
)
)
);
其他框 = {
面板盒( “空白,因为……原因?” ),
面板盒( “列名称” ,
碰撞盒(dt,全部)
)
};
现在,当我运行此命令时,当我在按重新创建时得到的结果旁边运行时,我会得到类似的结果。

这是我选择一个数据表并打开它然后按下一步后的情况。

这是我再次按下下一步的时候。

现在我要你标记左右图像之间的差异。当我说这不起作用时,是因为我尝试过。除非我误解了你所说的工作或如何使用你的脚本。但我的期望是右侧应该看起来与左侧完全相同(假设我已经打开了正确的数据表)。不仅如此,所有选项卡中的所有按钮也应该起作用。
回复:精确地重新创建一个处于精确状态的新窗口()抱歉,我没有意识到您正在制作一款视频游戏。因此,我建议首先专注于构建游戏引擎,然后构建保存状态将是一件简单的事情。
对于阅读此论坛的其他人来说,他们想要一种更简单的方法来重新创建窗口,但也不了解该方法。我附上了一个更复杂的示例,展示了稳健性和简单性。
您将运行 recreateWindow.jsl,它将提示您输入 recreateWindow2.jsl 的路径。
如果您对运行这些文件有任何疑问,请告诉我。
回复:精确地重新创建一个处于精确状态的新窗口()我不知道您是否曾经在旧的任天堂游戏中使用过模拟器,但这使用了与此类似的称为保存状态的东西。
我想要的是保存状态。 能够准确保存我所处的关卡、我在屏幕上的位置等的东西。告诉我重新启动游戏并不是我想要的。
该方法解决了不同的问题。我不明白这对此有什么帮助。
我想同意不同意。 我无意冒犯。很抱歉最初没有正确解释自己。
回复:精确地重新创建一个处于精确状态的新窗口()如果你有一些有效的东西,我不会进一步推动。但让我澄清一下你上面所说的。
这方法做为您工作,因为用户在选项卡 1 中提供的信息将用于创建选项卡 4(或任何选项卡)。
如果您只是重新运行脚本,用户将必须浏览选项卡 1-3 才能返回到选项卡 4。这是事实,但这并不适用方法,这仅适用于示例。
“现在我必须创建一个脚本来提取所有必要的函数并将其保存到 jsl(与您所说的非常相似,只是我必须即时创建它)。”
如果它已经创建了,为什么还要动态创建它呢? 也就是说,您有一个可以构建一次的脚本,为什么要构建第二个脚本来构建它两次?
回复:精确地重新创建一个处于精确状态的新窗口()抱歉,我一定说错了我的问题。此方法对我不起作用,因为用户在选项卡 1 中提供的信息将用于创建选项卡 4(或任何选项卡)。如果我只是重新运行脚本,用户将必须浏览选项卡 1-3 才能返回到选项卡 4。并且选项卡没有指定,它们可以是任何东西。现在我必须创建一个脚本来提取所有必要的功能并将其保存到 jsl(与您所说的非常相似,除了我必须即时创建它),这只是有点令人困惑。如果没有更好的办法我会处理。谢谢。
回复:精确地重新创建一个处于精确状态的新窗口()我编写了一个脚本,用于捕获选择的选项卡以及文本编辑框、数字编辑框、组合框和列表框的值,并在窗口关闭时将它们存储在全局二维数组中。 当窗口打开时,这些值将设置为窗口关闭时捕获的值。
我在脚本中包含了一个示例窗口来显示功能,但 getValues 和 setValues 函数用于捕获状态并在脚本再次运行时重置状态。
限制:
1. 此代码不考虑任何动态创建的显示框。 您需要调整代码来解决这个问题。
2. 此代码不会重新运行您的任何平台。 您可以根据需要调整代码来执行此操作。
3. 当关闭JMP 时,状态将丢失。 不过,您可以将数组保存在文本文件而不是全局变量中,并且可以在 JMP 的所有实例中检索这些值。
4. 我没有在此脚本中实现复选框(以及我忘记的任何其他显示框)。
脚本附后。
如果您对脚本有任何疑问,请告诉我。
回复:精确地重新创建一个处于精确状态的新窗口()我不知道该告诉你什么。我的解决方案准确地重新创建了窗口,k保持所有按钮功能完整,并且可以知道您所在的选项卡以及 OP 中要求的所有内容。
另外,Eval(nw<回复:精确地重新创建一个处于精确状态的新窗口()
我使用脚本创建它,但用户将选择他们想要的窗口外观(打开哪些数据表等)。如果我在按保存状态时处于选项卡(2)上,我希望能够打开回到保存状态,当前选择选项卡(2)并且所有报告和表格都打开到同一位置。现在我正在创建(尝试创建)一个函数,将所有相关函数拉入一个字符串中,然后对其进行 eval(parse()) 处理。它比 Eval(nw<回复:精确地重新创建一个处于精确状态的新窗口()
我假设您使用脚本创建了动态窗口。在这种情况下,您只需让按钮再次运行脚本即可。
名称默认为此处( 1 ) ;
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
西北=新窗户( “测试” ,列表框( “剧本” ,
双变量(是( :高度) , X ( :重量) ) ;
分配(
连续分布(
柱子( :高度) ,
自定义汇总统计数据(意思是( 0 ) )
) ,
连续分布(
柱子( :重量) ,
自定义汇总统计数据(意思是( 0 ) )
)
) ;
按钮盒( “重新创建窗口” ,
包括( “路径\到\这个\脚本\recreateWindow.jsl” ) ;
)
)
) ;
回复:精确地重新创建一个处于精确状态的新窗口()你是对的,会话脚本不是我想要的。如果我尝试这样做,它所做的只是打开我打开的数据表。它甚至不尝试创建一个新的 window()。
另外,我尝试了 eval(nw<嗯为什么它不起作用是有道理的,我只是希望有一个简单的解决方案,而不是如果我不知道一切会是什么,我就必须重新创建一切。
我会让希望再活一会儿。
只是为了澄清我的要求:
框1 =面板盒( “1” , 特布 =文本编辑框( “这是一个测试” ),按钮盒( “打印” ,打印(特布<<获取文本)));
框2 =面板盒( “2” , 特布 =文本编辑框( “这是一个测试” ),按钮盒( “打印” ,打印((特贝<<获取文本)|| “查理” )));
框3=面板盒( “3” , 特布 =文本编辑框( “这是一个测试” ),按钮盒( “打印” ,打印((特贝<<获取文本)|| “苏西” )));
西北=新窗户( “例子” ,
TB=标签框()
);
东西=评估者({框1,框3});
为了(我= 1 ,我<=尼特姆斯(东西),我++,
待定<<附加(字符(一)、东西)
);
西北<<获取脚本
/* 返回
V 列表框(
V 列表框(
标签框(
标签页框(
标题(“1”),
面板框(文本编辑框(“这是一个测试”),按钮框)
),
标签页框(
标题(“2”),
面板框(文本编辑框(“这是一个测试”),按钮框)
)
)
)
)
*/
它没有窗口标题或按钮框的脚本。而且,就是不会跑。
回复:精确地重新创建一个处于精确状态的新窗口()很遗憾, ” A会话脚本将捕捉到大多数特征”似乎并没有捕捉到文斯想要的东西。动态选项卡框处理得不好。在上述脚本的修改版本中,我运行它,然后保存会话脚本,然后检查它。选项卡框不会转移到会话脚本中。
初始脚本
名称默认为此处( 1 ) ;
dt =打开( “$SAMPLE_DATA/big class.jmp” ) ;
新窗户( “测试” ,标签框( “选项卡 1” ,远东= V 列表框() ) ) ;
如果(模组(天(今天() ) , 2 ) == 0 ,
x1 = V 列表框(
标签框(
“双变量优先” ,
BIV =双变量(是( :高度) , X ( :重量) ) ,
距离=分配(名义分布(柱子( :年龄) ) )
)
) ,
x1 = V 列表框(
标签框(
“分配第一” ,
距离=分配(名义分布(柱子( :年龄) ) ) ,
BIV =双变量(是( :高度) , X ( :重量) ) ;
)
)
) ;
远东<<附加( x1 ) ;
会话脚本
打开( “C:\Program Files\SAS\JMPPRO\12\Samples\Data\Big Class.jmp” ,窗口边界( 275 ,第484章, 1288 , 1141 ) ) ;
新窗户( “测试” ,
V 列表框(
分配(名义分布(柱子( :年龄) ) ) ,
双变量(是( :高度) , X ( :重量) )
)
) <<移动窗口(第722章, 15 ) <<尺寸窗口(第488章, 1025 ) <<设置窗口图标( “报告文件” ) ;
回复:精确地重新创建一个处于精确状态的新窗口()A会话脚本将捕获自定义报告和交互式更改的大部分功能,包括像 Jim 的示例中那样的复合报告。 但它也会节省用于重新创建您可能不关心的其他窗口和表格的代码。
您可以随时从以下位置保存会话脚本文件菜单。
还可以在首选项中进行设置,以便在退出 JMP 时始终保存会话脚本。
回复:精确地重新创建一个处于精确状态的新窗口()虽然 JMP 可以很好地创建脚本来重新创建任何单独的平台,但它不会将其转发到由这些平台组成的用户创建的显示窗口。
下面的脚本是一个非常简单的示例,说明 JMP 不会从用户定义的显示窗口创建可用的脚本。
名称默认为此处( 1 ) ;
dt =打开( “$SAMPLE_DATA/大类.jmp” ) ;
西北=新窗户( “测试” ,选项卡框( “剧本” ,
双变量(是( :高度) , X ( :重量) ) ;
分配(
连续分布(
柱子( :高度) ,
自定义汇总统计数据(意思是( 0 ) )
) ,
连续分布(
柱子( :重量) ,
自定义汇总统计数据(意思是( 0 ) )
)
) ;
)
) ;
RR =西北<<获取脚本;
展示( RR ) ;
评估( RR ) ;