連想配列内に格納されている表示ボックスからデータを取得するおい、
情報をキーとして保持し、ボックスを値として表示する配列を作成しようとしていますが、後で正しいステータス(チェックボックス用)を取得できないようです。すべてのチェックボックスを押しても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>ありがとう、
ベン。
スクリプティングRe:連想配列内に格納されている表示ボックスからデータを取得する少なくとも、DisplayArrayへのコンボボックス参照を保存する方法に問題があります。 DisplayArrayの値を確認することで、かなり簡単に確認できます。 チェックボックスは次のように表示されます。
Check Box("")それらがこのようなものとして見られるべきとき:
nw = new window("", cb = checkbox("test")); //<STRONG>cb = DisplayBox[CheckBoxBox]</STRONG>
したがって、チェックボックスを参照するDisplayBoxではなく、DisplayArrayに空の値を持つ新しいチェックボックスを保存しています。
また、このチェックボックス選択ウィンドウを現在作成しているよりも簡単な方法で作成できると思います。 たとえば、画像とそれで何をしたいのかを教えてください。 たとえば、現在、For Each Row()を使用してデータテーブルの各行をループし、次にAssociative Array()を使用して表示ボックスを保存しています。 連想配列にはキーごとに1つの値しかないため、:Col1に値が重複している場合は、最後の「値」のみが取得されます。
いくつかのアイデアを与える可能性のあるビッグクラスのデータテーブルを使用した簡単な例:
もっと見る...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);
)
);
);