연관 배열 내부에 저장된 디스플레이 상자에서 데이터 가져오기여기 요,
정보를 키로 유지하고 상자를 값으로 표시하는 배열을 사용하려고 하지만 나중에 올바른 상태(확인란에 대한)를 얻을 수 없는 것 같습니다. 모든 확인란은 눌려도 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()를 사용하여 표시 상자를 저장하고 있습니다. 연관 배열은 키당 하나의 값만 가지므로 :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);
)
);
);