나는 비교적 간단한 작업이어야 할 것처럼 보이는 뭔가를 더욱 어려운 방식으로 수행해 온 것 같은 느낌이 듭니다.다른 사람이 더 나은 접근 방식에 대한 조언을 갖고 있는지 궁금합니다.

여기에 표시된 것과 같은 사용자 정의 테이블을 만들려고 합니다. 여기서 "값" 열의 각 항목은 서로 다른 소수 자릿수를 가질 수 있습니다.아래 예에서 "N"에는 소수점 이하 자릿수가 0개 있어야 하고, "Mean"/"SD"/"LCL (3SD)"/"UCL (3SD)"에는 소수점 이하 자릿수가 정확히 4개 있어야 하며, "Pp"에는 소수점 이하 자릿수가 정확히 2개 있어야 합니다. 장소 등 - 뒤에 오는 0이 포함됩니다.이러한 값은 "통계" 열 항목을 열 머리글로 사용하여 첫 번째 행의 열에 값이 입력되는 데이터 테이블에서 가져옵니다.
원래 저는 이것을 String Col Box와 Number Col Box가 포함된 Table Box로 설정했습니다.
nw = New Window( "nw", tb = Table Box(
scb = String Col Box( "Stat", {}),
ncb = Number Col Box( "Value", {}),
)
);
For( i = 1, i <= N Cols( dt), i++,
tb << Add Row( {Column( dt, i) << Get Name, Column( dt, i)[1] })
);하지만 Number Col Box에는 해당 상자의 모든 항목에 적용되는 고유한 숫자 형식 설정이 있는 것 같습니다.
많은 시행착오 끝에 Char() 또는 Format()(형식/소수점 지정)을 사용하여 개별 항목을 숫자에서 문자 형식으로 미리 변환하는 것이 효과가 있다는 것을 알았습니다. 예:
Column( dt, "Pp")[1] = Format( Round( Column( dt, "Pp")[1], 2), "Fixed Dec", 2);
그런 다음 Number Col Box를 두 번째 String Col Box로 바꾸고 변환된 값을 문자열로 추가합니다. 예:
nw = New Window( "nw", tb = Table Box(
scb1 = String Col Box( "Stat", {}),
scb2 = String Col Box( "Value", {}),
)
);
For( i = 1, i <= N Cols( dt), i++,
tb << Add Row( {Column( dt, i) << Get Name, Column( dt, i)[1] })
);내가 놓친 더 쉬운 방법이 있습니까?
곁에:
- 오늘은 Format() 함수가 숫자 데이터를 문자 데이터로 변환하는 함수를 배웠습니다.나는 이것이 숫자 데이터의 형식을 변경하기 위한 것이라고 생각했습니다.
- 오늘은 Char()에 너비와 소수점 이하 자릿수 속성을 추가할 수 있다는 것을 배웠습니다.그렇지 않으면 후행 0이 잘립니다.
(원본 데이터를 보지 않고) 문자열 열 상자를 사용하는 것이 가장 쉬운 옵션일 가능성이 높습니다. 원본 데이터 테이블에서 올바른 형식의 데이터를 가져오거나 String Col Box에 값을 추가하기 전에 변환할 수 있습니다(구성 연관 배열이 도움이 될 수 있음).
체재() - 값을 변환합니다 엑스 인용문에 체재 후속 인수에서 지정합니다.(좋은 스크립팅 인덱스? 이유는 설명이 다릅니다)
Jarmo님의 피드백에 감사드립니다.
더 둘러본 후에는 귀하의 의견에 동의합니다. 문자열로 유지하는 것이 유연성이 더 높은 것 같습니다.
처음 게시물을 올린 후 Col Box -> Text Box 접근 방식에 대한 멋진 소개를 접했습니다. 이는 String Col Box를 사용하는 것과 비슷해 보이지만 개별 라인 항목(테두리, 음영 등)의 서식을 지정하는 데 더 많은 유연성을 제공합니다. https://community.jmp.com/t5/Discovery-Summit-2018/Supercharge-Your-User-Interfaces-in-JSL-US-2018-113/ta-p/73744#U73744 . 저는 이 접근 방식을 추진하고 있습니다.
Col Box에 대해 배우고 그것에 대해 좀 더 생각해 본 후, 원래 질문이 Text Box의 숫자 아날로그가 있는지 여부에 더 가깝다는 것을 깨달았습니다.하지만 그런 옵션은 보이지 않습니다.
- 조엘
Col Box는 많은 사용자 정의가 가능하기 때문에 좋지만 "문제"가 있습니다. 값을 얻는 것이 더 어렵고 정렬하려는 경우 생각한 대로 작동하지 않을 수도 있습니다.
Names Default To Here(1);
nw = New Window("Example",
tb = Table Box(
scb = String Col Box("strings", {"x", "y", "z"}),
cb = Col Box(
"boxes",
Text Box("a"),
Text Box("b"),
Text Box("c")
)
);
);
tb << Set Click Sort(1); // try clicking on boxes to sort
Show(tb << get);
Show(scb << get);
Show(cb << get);
Show((cb << XPath("//TextBox")) << get text);
더 많은 사용자 정의를 원할 때도 Col Box를 사용했습니다. 한 가지 예는 String Col Box에 대해 여러 줄을 갖고 싶어하는 것입니다. 그렇게 할 수 없으므로 N 줄이 있는 Col Box 및 Text Box를 사용해야 합니다(이렇게 하면 모든 것이 그만큼 높아집니다). 또는 라디오 상자나 체크 상자를 테이블 형식으로 갖고 싶다면 Col Box를 사용하는 것이 좋습니다.