如何使用 JSL 实现“将您的工作保存在 JMP 日志中”根据下面共享的信息,可以使用“打开所有文件”方法创建到 JMP 期刊的链接。
https://community.jmp.com/t5/Statistical-Thinking-for/Saving-Your-Work-in-a-JMP-Journal/ta-p/271841
我想在 GUI 中实现一项功能,单击按钮即可创建日志链接,方法类似于参考视频中显示的方法(无需将整个 GUI 界面传输到日志,而只需创建链接)。用于创建日志链接的 JSL 仅允许连接数据表。如何在新窗口中为所有图表创建链接?我非常感谢任何有关此事的帮助。
例如,如何将以下新窗口转移到 JMP 日志并以链接的形式呈现?
//
名称默认为此处( 1 );
dt = 打开( “$SAMPLE_DATA/Big Class.jmp” ) ;
nw2= New Window( "新窗口",
双变量(y(:体重),x(:身高));
(英文):
nw2 << 将 ByGroup 脚本保存到日志;
高级统计建模自动化和脚本基础数据分析与建模数据访问回复:如何使用 JSL 实现“在 JMP 日志中保存您的工作”我不太清楚你想要什么,但这可能是它
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw2 = New Window( "New window",
biv = Bivariate( y( :weight ), x( :height ) )
);
biv << Save ByGroup Script to Journal;
Current Journal() << append( ob = Outline Box( "All Files" ) );
ob << Add All Open Files;
PS 输入 JSL 时请使用预览窗口顶部的 JSL 图标。这样可以更轻松地阅读和理解您的代码。
回复:如何使用 JSL 实现“在 JMP 日志中保存您的工作”
这正是我想要的结果。
另外,除了“添加所有打开的文件”的方法外,有没有办法只添加特定的“指定名称”打开的文件?例如,只在日志列表中添加“新窗口”的链接。
回复:如何使用 JSL 实现“在 JMP 日志中保存您的工作”在第一次回答您的问题时,我应该向您指出脚本索引(在“帮助”下拉菜单下)。脚本索引将显示可以传递给对象的消息,例如“添加所有打开的文件”消息。在我的第一次回答中,您会注意到该消息被发送到变量“ob”引用的 OutlineBox()。如果您查看脚本指南并选择 OutlineBox,您将看到可以指定的所有消息以向其添加项目。

回复:如何使用 JSL 实现“在 JMP 日志中保存您的工作”我觉得我没有把问题解释清楚。我想问的是“添加所有打开的文件”是否会自动将所有当前打开的 JMP 文件作为链接对象发送。但是,我想要的是用户能够从这些打开的窗口中只选择所需的文件,而不是添加所有文件,并且不使用“添加文件引用”来添加已保存的文件。如下图所示,我希望用户能够选择他们想要添加的“打开的文件”。

回复:如何使用 JSL 实现“在 JMP 日志中保存您的工作”我之前的回答显然不太清楚。我向 yo9 指出脚本索引和可以传递给大纲框的各种消息,旨在为您提供一个很好的来源,以便了解如何编写 JSL 来解决您的特定要求。
回复:如何使用 JSL 实现“在 JMP 日志中保存您的工作”谢谢你的回复。我明白你的意思。你是说我需要将我想保存的项目发送到大纲框进行录制。但是,我目前只知道“ob << add all open files”可用于一次发送所有打开的文件。我不知道如何将特定的打开文件发送到大纲框。你能给我一些提示吗?
另外,我还有一个问题。当我使用“ob << 添加所有打开的文件”并且链接出现在日志中时,我注意到按钮的功能似乎消失了。例如,在下面显示的 JSL 中,最初有一个按钮,但在单击日志中的链接后它似乎消失了。我如何才能使按钮的功能继续存在?
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw2 = New Window( "New window",
outputGButton = Button Box( "Test", print("test");
),
biv = Bivariate( y( :weight ), x( :height ) )
);
nw2 << Save ByGroup Script to Journal;
Current Journal() << append( ob = Outline Box( "All Files" ) );
ob << Add All Open Files;回复:如何使用 JSL 实现“在 JMP 日志中保存您的工作”您最新回复中的 JSL 创建了一个窗口对象显示框,其中包含一个名为“nw2”的变量,用于允许引用该显示框。窗口对象的默认操作是创建一个新的显示窗口
nw2 = New Window( "New window",
在窗口对象内部,有一个名为“Test”的按钮框显示框和一个脚本“Print(“test”)”。其中有一个名为“OutputGButton”的变量,用于引用按钮框。
outputGButton = Button Box( "Test", print("test");
)
窗口对象中的下一个对象是运行双变量平台的 JSL,其中有一个名为“biv”的变量,用于引用双变量平台对象。双变量平台的默认操作是运行双变量分析并在新窗口中显示输出,或者在本例中在 nw2 窗口对象中显示输出。2 个元素被传递给双变量平台。列权重传递给 Y 元素,列高度传递给 X 元素
biv = Bivariate( y( :weight ), x( :height ) )
此时,在 JSL 中,nw2 窗口对象的定义已完成,以结束“)”
我将深入这个细节层次是为了说明脚本中的下一行如何与 nw2 窗口对象或 nw2 窗口对象中的某个对象交互。
每个定义的对象都有可以传递给它们的消息。不同类型的对象有不同的可以传递给它们的消息列表。nw2 窗口对象有诸如“设置窗口标题”、“将窗口置于最前面”、“关闭窗口”等消息。可以发送给窗口对象的完整消息列表列在脚本索引中

在当前脚本中
nw2 << Save ByGroup Script to Journal;
它有“将 ByGroup 脚本保存到日志”消息被传递给 nw2 窗口对象。但是,该消息不是窗口对象可用的消息。
将“按组脚本保存到日志”是 JMP 平台可用的消息。
脚本中唯一可以传递该消息的对象是 biv 变量引用的双变量平台
biv << Save ByGroup Script to Journal;
然而,当以这种方式使用时,传递给日志的脚本仅包含运行双变量的 JSL,而不包含运行创建带有按钮框和双变量平台的窗口对象的完整 JSL 的脚本。
因此需要做的是编写 JSL,将包含当前在 nw2 窗口对象定义中的所有 JSL 的按钮框放入日志中。
基本上,Save ByGroup Script to Journal 的作用是创建一个带有指定脚本的按钮框。如果要求按钮框中的内容与给定的功能不同,则由用户编写代码进行更改。下面是一个与 Save ByGrooup 执行相同操作的脚本……但在 Bivariate 的输出之前添加了指定的按钮框
Names Default To Here( 1 );
//dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
file = pick file();
dt = open(file);
biv = dt << Bivariate( y( :weight ), x( :height ), invisible );
theScript = Char( biv << get script );
biv << close window;
Eval(
Parse(
"New Window( \!"My Journal\!",
<<JOURNAL></JOURNAL>
<P>它还使用菜单(1)添加“添加所有打开的文件”,让用户选择要添加的文件</P>回复:如何使用 JSL 实现“在 JMP 日志中保存您的工作”与许多情况相比,这里的情况不那么明显,但正如 Jim 所暗示的那样,脚本索引确实提供了解决方案。<<“添加所有打开的文件”有一个可选参数,可让您选择要在大纲框中链接到的文件。

ob << Add All Open Files( Menu( 1 ) );
