從存儲在關聯數組中的顯示框獲取數據嘿,
我正在嘗試使用一個數組來保存信息作為鍵並將顯示框作為值,但之後我似乎無法獲得它們的正確狀態(對於復選框)-即使按下所有復選框也返回為 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);
)
);
);