我觉得我一直在以一种特别困难的方式做一些事情,这似乎应该是一项相对简单的任务。想知道其他人是否有更好的方法的建议。

我正在尝试创建一个像此处所示的自定义表格,其中“值”列中的每个条目都可以具有不同的小数位数。在下面的示例中,“N”应有 0 个小数位,“Mean”/“SD”/“LCL (3SD)”/“UCL (3SD)”应恰好有四个小数位,“Pp”应恰好有两个小数位位置等 - 包括任何尾随零。这些值来自数据表,其中值输入到第一行的列中,并以“Stat”列条目作为列标题。
最初我将其设置为一个表格框,其中嵌入了字符串列框和数字列框:
nw = New Window( "nw", tb = Table Box(
scb = String Col Box( "Stat", {}),
ncb = Number Col Box( "Value", {}),
)
);
For( i = 1, i <= N Cols( dt), i++,
tb << Add Row( {Column( dt, i) << Get Name, Column( dt, i)[1] })
);但数字列框似乎有自己的数字格式设置,适用于该框中的所有条目。
经过多次试验和错误,我发现有效的是使用 Char() 或 Format() (指定格式/小数位)将各个项目从数字格式转换为字符格式。例如,
Column( dt, "Pp")[1] = Format( Round( Column( dt, "Pp")[1], 2), "Fixed Dec", 2);
然后用第二个字符串列框替换数字列框并将转换后的值添加为字符串,例如,
nw = New Window( "nw", tb = Table Box(
scb1 = String Col Box( "Stat", {}),
scb2 = String Col Box( "Value", {}),
)
);
For( i = 1, i <= N Cols( dt), i++,
tb << Add Row( {Column( dt, i) << Get Name, Column( dt, i)[1] })
);有没有更简单的方法让我失踪?
在旁边:
- 今天我了解到Format()函数将数字数据转换为字符数据。我认为这只是为了改变数字数据的格式。
- 今天我了解到可以向 Char() 添加宽度和小数位属性。否则它将截掉尾随零。
(没有看到你的原始数据)使用字符串 col box 很可能是最简单的选择。 您可以从原始数据表中获取正确格式的数据,也可以在将值添加到 String Col Box 之前对其进行转换(配置关联数组可能会有所帮助)。
格式() -转换值X进入引用的格式您在后续参数中指定的。(脚本索引有的好?原因有不同的描述)
感谢您的反馈贾莫。
经过更多的环顾之后,我同意你的观点 - 似乎将事物保留为字符串具有更大的灵活性。
在我的第一篇文章之后,我发现了这个关于 Col Box -> Text Box 方法的很好的介绍,它看起来与使用 String Col Box 类似,但在格式化单个行项目(边框、阴影等)方面提供了更大的灵活性 - https://community.jmp.com/t5/Discovery-Summit-2018/Supercharge-Your-User-Interfaces-in-JSL-US-2018-113/ta-p/73744#U73744 。我正在推进这种方法。
在了解了 Col Box 并进一步思考之后,我意识到我最初的问题可能更多的是是否存在文本框的数字模拟。但我没有看到这样的选择。
——乔尔
Col Box 很好,因为你可以对它进行很多自定义,但它确实有它的“问题”。 从中获取值更加困难,如果您想按它排序,它的行为也可能不会像您想象的那样
Names Default To Here(1);
nw = New Window("Example",
tb = Table Box(
scb = String Col Box("strings", {"x", "y", "z"}),
cb = Col Box(
"boxes",
Text Box("a"),
Text Box("b"),
Text Box("c")
)
);
);
tb << Set Click Sort(1); // try clicking on boxes to sort
Show(tb << get);
Show(scb << get);
Show(cb << get);
Show((cb << XPath("//TextBox")) << get text);
当我想要更多定制时,我也使用了 Col Box。 一个例子是希望 String Col Box 具有多行。 你不能这样做,所以你必须使用 Col Box 和 Text Box with N Lines (但这将迫使所有的都那么高)。 或者,如果我想要表格格式的单选框或复选框,Col Box 是一个不错的选择。