使用脚本,如何在日志文件的按钮框中设置表格脚本的文本?使用脚本,我需要构建一个完全独立的日志文件,其中包含重现数据表的按钮框。在生产应用程序中,会有很多标题(每个标题代表一个零件),每个标题下面会有几个按钮框,每个显示与零件相关的不同数据表。由于构建数据表需要进行复杂的计算,因此我使用函数来构建它们。我的意图是只将日志文件分发给用户。
我使用 Baltic.jmp 样本数据表构建了一个骨架示例。 函数“SmallTables()”以文本形式返回表格脚本。但是我找不到在日志文件中按钮框的脚本框中输入该文本的方法。 任何帮助将不胜感激。
SmallTables = Function( {k},
dt = Open( "$Sample_Data/Baltic.jmp" );
dt_Small = dt << Subset( Rows(), Columns( Column( k ) ), Output Table Name( "Small" ) );
Close( dt, NoSave );
tblScript = dt_Small << Get Script;
result = Char( Name Expr( tblScript ) );
);
jrn = New Window( "Table Test", Outline Box( "Title" ) );
For( k = 1, k <= 5, k++,
jrn << Append( BB = Button Box( "Small Table " || Char( k ), Set Script( SmallTables( k ) ) ) )
);Re: 使用脚本,如何在日志文件的按钮框中设置表格脚本的文本?非常感谢您对那篇文章的引用!这是一个非常清晰的解释,有很好的例子。这是非常有帮助的。
Re: 使用脚本,如何在日志文件的按钮框中设置表格脚本的文本?诀窍是确保在评估之前插入子表达式。这篇 JSL Cookbook 文章可能会有所帮助:
使用 Eval Insert、Eval Expr、Parse 和 Substitute 将一个表达式插入另一个表达式
Re: 使用脚本,如何在日志文件的按钮框中设置表格脚本的文本?多么好的例子!但是,在我的项目中,我需要构建数百个数据表,每个部分都有几个。这就是我使用函数来构建数据表的原因(希望没有初学者会看到那脚本!)。 恐怕您的建议会导致同时打开太多窗口。 但是,对于可管理数量的数据表,您的概念非常好!我相信我会有机会使用它。
非常感谢你的帮助。
Re: 使用脚本,如何在日志文件的按钮框中设置表格脚本的文本?太感谢了!这在我的“大”脚本中非常有效。我的想法是我的函数的结果是脚本的文本表示,因此应该在按钮框脚本对话框中输入。 我仍然不清楚为什么这不起作用,但是正如您所演示的,使用 Name Expr 函数和 Substitute 可以完美地工作。
顺便说一句,在我的实际应用程序中,循环是必需的,因为我需要构造不同的表。我有大量的零件,脚本用脚本构造了几个数据表,每个零件都是独一无二的。该脚本需要一些时间才能运行,因此能够运行该脚本来创建一个独立的日志文件真是太好了。
再次感谢您让我走上正确的道路!
Re: 使用脚本,如何在日志文件的按钮框中设置表格脚本的文本?我使用独立的日志文件进行演示和培训,使其易于共享。关闭各个部分并清理所有内容的链接可以使事情继续进行。下面的脚本创建了一个基本的示例日志;一旦你运行它,你应该会看到一个带有链接的日志。右键单击每个并选择 Edit > Edit Script 以查看它们是如何构造的。我经常使用“复制表脚本”来填充这些内容。将此代码放入函数中是个好主意,但请注意,对于尝试探索您的日记的初学者来说,它看起来更像是黑魔法。

请注意,我通常以交互方式制作日记,而不是使用这样的脚本。
names default to here(1);
//Open data tables temporarily so we can copy their scripts
dtIrisTemp = open("$Sample_Data/Iris.jmp");
dtBigClassTemp = open("$Sample_Data/Big Class.jmp");
//Use Eval(EvalExpr()) so the actual scripts for the data table are saved in
//the journal.
Eval( Eval Expr(
journal = New Window( "A Journal", <<JOURNAL></JOURNAL>
Re: 使用脚本,如何在日志文件的按钮框中设置表格脚本的文本?如果您将使用一个表,我不会为每个函数调用打开和关闭它。 我会打开表格,构建窗口,使用 for 循环然后关闭表格。
尝试这个。
SmallTables = Function( {k},
dt = Open( "$Sample_Data/Baltic.jmp" );
dt_Small = dt << Subset( Rows(), Columns( Column( k ) ), Output Table Name( "Small" ), Invisible );
Close( dt, NoSave );
_xx = dt_Small << Get Table Script Names;
dt_Small << Delete Scripts(_xx);
tblScript = dt_Small << Get Script;
wait(0);
Close( dt_Small , NoSave);
NameExpr(tblScript)
);
jrn = New Window( "Table Test", Outline Box( "Title" ) );
For( k = 1, k <= 5, k++,
_xx = SmallTables(k);
Eval(Substitute(Expr(jrn << Append( BB = Button Box( "Small Table " || Char( k ), Set Script( _scr ) ) )),
Expr(_scr), NameExpr(_xx) ) )
);Re: 使用脚本,如何在日志文件的按钮框中设置表格脚本的文本?