你好,
我想提供一个窗口级别的参数或变量列表(例如从 excel 复制)并进一步传递此列表(例如通过单击“确定”)以创建另一个 SQL 查询列表。 我可以使用某种类型的列表框(如下图所示)来做到这一点吗? 可以使用哪些其他方法来做到这一点? 此致。

几个问题/想法让你前进:
- 您是否希望该用户从预先创建的列表中选择感兴趣的序列号? 你可以使用列表框
- 您是否希望用户能够从某处复制粘贴序列号并将其转换为 SQL 查询? 您可以使用具有解析功能的文本编辑框。
- 可能是以上两种? 我很可能会尽量避免这种情况,就好像用户是从某个地方复制粘贴值一样,他们可以在那里选择他们想要包含的内容。
- 你想使用模态吗?
检查脚本索引:模态(如何构建模态窗口)、列表框、文本编辑框、连接项(如何将 JMP 列表转换为字符串)
列表框的快速示例,它将在 OK 按钮下方设置文本框值,并在按下 OK 时将所选值打印为列表以进行记录:
Names Default To Here(1);
serialList = {"a1", "b2", "c3", "d4"};
win2 = New Window("Example",
V List Box(
lb = List Box(serialList, width(200), nlines(6)),
Button Box("OK", Show(lb << get selected); tb << Set Text(char(lb << get selected))),
tb = Text Box("");
)
);

你好,
谢谢你的建议。 我希望能够从某处复制序列号,然后使用解析函数进一步传递它们,因此选项 2 以及模式窗口。 我将尝试使用文本编辑框。
最好的祝福
下面是一个例子。 创建函数(示例中的 parsePaste)来处理输入并进行您想要的修改:删除重复项、用某些内容替换行更改、删除重复的分隔符... 按确定后,这将返回一个字符串,然后您可以修改返回的字符串以适应您的 SQL(以 Words() 和 Concat Items() 为例)。
Names Default To Here(1);
parsePaste = function({tempStr}, {Default Local},
tempStr = Regex(tempStr, "\r\n", ",", GLOBALREPLACE); //replace row changes with ,
tempStr = Substitute(tempStr, ",,", ","); //replace double ,, with one ,
tempStr = Regex(tempStr, ",$", "", GLOBALREPLACE); //remove , if last character
return(tempStr);
);
win2 = New Window("Example", << Modal,
V List Box(
Text Box("Add Serialnumbers:"),
teb = Text Edit Box("", << set width(200), << set nlines(3),
<< Set Function(Function({this},
this << set text(parsePaste(this << get text));
))
),
H List Box(
Button Box("OK", listStr = teb << get text),
Button Box("Cancel")
)
)
);
show(listStr);
temp = Words(listStr, ",");
temp = "'" || Concat Items(temp, "','") ||"'";
show(temp);