从存储在关联数组中的显示框获取数据嘿,
我正在尝试使用一个数组来保存信息作为键并将显示框作为值,但之后我似乎无法获得它们的正确状态(对于复选框)-即使按下所有复选框也返回为 0。
我似乎无法理解这是由于语法问题还是更深层次的原因,这是我的代码:
MainDisplayBox = V List Box();
DisplayArray = Associative Array();
current data table(dt);
For Each Row(
DisplayArray[char(:Col1)] = list(checkbox(""),hlist box(
text box(char(:Col1)||": suggested value: "),
Text Edit Box(round(:Col2,3)),
));
MainDisplayBox << append(hlistbox(eval((DisplayArray[Col1][1])),eval((DisplayArray[Col1][2]))));
);
OffsetCloseButton = Button Box("close",OffsetWindow<<CLOSE window=""></CLOSE>谢谢,
本。
脚本编写回复:从存储在关联数组中的显示框获取数据至少在您将组合框引用保存到 DisplayArray 的方式上有问题。 通过检查 DisplayArray 的值,您可以很容易地看到它。 复选框被视为:
Check Box("")当它们应该被看作是这样的:
nw = new window("", cb = checkbox("test")); //<STRONG>cb = DisplayBox[CheckBoxBox]</STRONG>
因此,您要在 DisplayArray 中保存具有空值的新复选框,而不是引用复选框的 DisplayBox。
我还认为构建此复选框选择窗口的方法可能比您目前的方法更简单。 您能否提供例如图像以及您想要它做什么? 例如,您当前正在使用 For Each Row() 遍历数据表中的每一行,然后使用 Associative Array() 来保存显示框。 关联数组每个键只有一个值,因此如果您在 :Col1 上有重复的值,您将只能获得最后一个“值”。
使用 Big Class 数据表的快速示例可能会给您一些想法:
查看更多...Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
keys = Associative Array(dt:name) << get keys;
collection = Associative Array();
vlb = V List Box();
For(i = 1, i <= N Items(keys), i++,
collection[keys[i]] = {};
hlbTemp = H List Box(
collection[keys[i]][1] = Check Box(""),
Text Box(keys[i] || ": suggested value"),
collection[keys[i]][2] = Text Edit Box(dt:height[i])
);
vlb << Append(hlbTemp);
);
//show(collection);
nw = New window("UI", << modal,
v list box(
vlb,
Button Box("OK",
For(i = 1, i <= N Items(keys), i++,
If(collection[keys[i]][1] << get == 1,
Insert Into(pressed, keys[i])
);
);
show(pressed);
)
);
);