다양한 관찰을 선택하기 위한 동적 대화 상자다음 데이터가 있습니다. 게임 열에서 사용할 수 있는 다양한 유형의 게임을 표시하고 사용자가 각 게임의 유형을 선택할 수 있는 옵션을 제공하는 대화 상자를 만들고 싶습니다. 사용자가 각 게임에 대한 유형을 선택하고 확인을 클릭하면 각 게임에 대한 게임 유형이 추가된 새 열로 원래 테이블을 업데이트해야 합니다. 또한 사용자가 특정 게임 유형에 대해 선택한 게임이 가능한 경우 해당 게임은 중복을 피하기 위해 대화 상자의 게임 목록에서 숨겨야 합니다.
아래는 내 원본 및 최종 테이블입니다. 대화형 대화 상자는 사용자가 각 게임 유형에 사용할 수 있는 게임 선택을 끌어다 놓을 수 있는 첨부된 이미지와 같이 보여야 합니다. 확인 버튼은 모든 게임을 선택한 후에만 활성화됩니다.
동일한 .jsl 스크립트를 생성하도록 도와주세요.
원본 테이블:
| 이름 | 게임 |
| ㅏ | 축구 |
| ㅏ | 체스 |
| ㅏ | 배드민턴 |
| 비 | 축구 |
| 씨 | 체스 |
| 비 | 탁구 |
| 디 | 아무것도 아님 |
파이널 테이블:
| 이름 | 게임 | 게임 타입 |
| ㅏ | 축구 | 집 밖의 |
| ㅏ | 체스 | 실내 |
| ㅏ | 배드민턴 | 실내 |
| 비 | 축구 | 집 밖의 |
| 씨 | 체스 | 실내 |
| 비 | 탁구 | 실내 |
| 디 | 아무것도 아님 | 해당 없음 |
감사해요 

Re: 다양한 관찰을 선택하기 위한 동적 대화 상자트낙스 @gzmorgan0
당신의 도움을 주셔서 감사합니다.
JMP 14를 사용하고 있습니다.Re: 다양한 관찰을 선택하기 위한 동적 대화 상자@라자트 ,
수정된 스크립트를 첨부합니다. 참고할 항목:
- 스크립트 내부 목록에 의해 설정된 범주 옵션 목록에 대해 ComboBox를 사용합니다.
- 할당은 소스 목록, ComboBox의 현재 범주에서 선택하고 할당 버튼을 눌러 이루어집니다.
- 과제는 게임 이름 > 범주로 나열됩니다.
- 테이블을 점진적으로 업데이트할 수 있도록 업데이트 버튼이 추가되었습니다.
- 소스 목록은 게임 유형이 할당되지 않은 게임에 대해서만 생성됩니다.
- 제거 및 테이블에 쓰기 작업을 변경해야 했습니다. 이제 lb1의 항목인 할당 ListBox에는 단일 문자열에 2개의 정보가 있습니다. Word(n,string,delimiter) 함수는 관련 정보를 추출하는 데 사용됩니다.
스크린샷에는 하나의 할당이 수행되었음을 표시합니다. 이 보기에서 사용자가 할당을 누르면 배드민턴과 축구가 실외로 할당됩니다.
이 인터페이스는 표시 상자의 변수 수를 줄입니다.유용한 인터페이스를 만들려면 응용 프로그램, 요구 사항 및 사용법을 이해하고 몇 가지 기본 사항을 알고 있거나 원하는 것과 가까운 예제 코드를 찾고 이를 이해해야 합니다. 이 스크립트에 대한 많은 대안이 있습니다.행운을 빌어요!

대화 상자 레이아웃용 JSL. 전체 스크립트를 첨부합니다.
//--Dialog
usr = New Window("Using List Boxes", <<MODAL></MODAL>Re: 다양한 관찰을 선택하기 위한 동적 대화 상자@라자트 ,
사용 중인 JMP 버전을 언급하지 않았습니다.JMP 14인 경우 JMP 기본 메뉴에서 도움말 > 설명서 > JMP 스크립팅 가이드 . 하드 바운드 책의 PDF 버전입니다. 11장, 517페이지부터 "사용자 지정 창 구성" 섹션이 시작됩니다.이것은 학습을 위한 아주 좋은 소스입니다.
또한 도움말 > 스크립팅 인덱스 > 상단 회색 버튼에서 누르고 선택 디스플레이 박스 .왼쪽에서 표시 상자 생성자를 선택하고 오른쪽에서 구문을 확인한 다음 실행하거나 복사하여 붙여넣고 자신의 스크립트를 만들어 각 생성자의 작동 방식을 배울 수 있는 간단한 예제 스크립트가 1개 이상 있습니다.나는 당신이 조회 제안합니다 : 버튼박스 , 목록상자상자 생성자입니다. 패널박스 , 라인업박스 , 리스트 박스 (HListBox, VListBox)는 대화 상자의 레이아웃을 정렬하는 데 사용되는 컨테이너입니다.
실제로 스크립트를 작성하는 방법을 배우려면 도구를 알아야 하며 이 학습 여정에는 시간이 걸릴 수 있습니다.그러나 많은 스크립터는 기존 스크립트를 읽고, 읽고, 실행하고, 필요에 맞게 수정하여 학습합니다.
많은 변수가 필요하다고 말씀하셨기 때문에 3개 이상의 카테고리(실내, 실외, 없음)가 필요하다고 가정합니다. 저번 포스팅에서 언급했듯이 이것에 대한 많은 방법이 있으며 저는 복사 붙여넣기 코드를 사용했습니다.카테고리가 많은 경우 다음에서 제공한 예제로 스크립트를 수정하겠습니다. @pmroz . ComboBox를 사용하여 범주 목록에서 선택하고 하나의 버튼 상자(할당)와 하나의 할당 상자만 사용했을 것입니다.시간이 된다면 스크립트를 수정해서 첨부하도록 하겠습니다.
JMP에서 JMP 스크립팅으로, 2 그리고 JSL Companion, JMP 스크립팅 언어의 애플리케이션, 제2판 JSL을 배우는 데 유용한 다른 두 권의 책이 있습니다.
Re: 다양한 관찰을 선택하기 위한 동적 대화 상자감사해요 @gzmorgan0
이 솔루션만 찾고 있습니다.
코드를 이해하려고 노력하고 있습니다. 너무 많은 변수를 만들어야 할 것 같습니다. jsl을 사용하여 대화형 대화 상자를 만드는 방법을 배울 수 있는 좋은 비디오 자습서 시리즈(가급적)나 참조할 수 있는 책을 제안해 주시겠습니까? 저는 이 대화 상자를 만드는 초기 단계에 있습니다.
감사해요 
Re: 다양한 관찰을 선택하기 위한 동적 대화 상자@라자트 ,
대부분의 JMP 스크립팅 언어, JSL, 사용자 지정 대화 상자를 구축하기 위한 개체 및 기능은 테이블 열을 대상으로 합니다. JMP 기본 제공 대화 상자 창이 열을 요청하고 있다고 생각하십시오. 사용자 지정 선택에 사용할 수 있는 개체가 있지만 이러한 "값" 개체는 일반적으로 더 많은 프로그래밍이 필요합니다.예를 들어, ColListBox 개체에는 내장된 끌어서 놓기 인터페이스가 있습니다. 열 이름을 다른 ColListBox로 끌 수 있으며 열 이름은 고유합니다.
JSL은 ListBox() 개체를 제공하지만 고유성을 보장하는 것은 이제 스크립터 작업입니다. 예를 들어 작업을 코딩하는 방법에 따라 축구가 하나의 분류만 있고 해당 이름이 한 번만 사용되도록 관리해야 합니다.
한 가지 방법은 대화 상자를 사용하지 않고 고유 게임 및 게임 유형의 테이블 요약을 만들고 사용자가 이 단축 테이블을 업데이트한 다음 소스 테이블을 업데이트하도록 하는 것입니다. 이 방법은 이전 데이터베이스 업데이트 인터페이스와 유사합니다.
설명된 작업을 완료하기 위해 매우 간단하고 우아하지 않은(반복적이고 무차별 대입 코드) 스크립트를 첨부했습니다.당신이 책을 읽지 않았기 때문에 간단하게 유지했습니다.스크립트 인터페이스에는 게임이 잘못된 유형으로 실수로 선택된 경우 제거 버튼이 포함되어 있습니다.통합 기능을 만드는 대신 게임 목록이 중복되지 않도록 하고 게임이 실내 및 실외 모두로 분류되지 않도록 하는 기능을 사용하여 카테고리가 선택되면 소스 목록에서 게임을 제거하는 코드를 작성했습니다.
연관 배열, 키 목록, ListBox, ButtonBox 및 Set Function()에 대해 읽어야 합니다.
아래는 스크립트의 대화 상자 및 대화 부분의 스크린샷입니다. 전체 스크립트를 첨부합니다.DataFilterBox를 사용하여 이 작업을 수행할 수 있지만 ListBox()를 사용하는 것이 더 쉽습니다. BTW 이것은 JMP13 및 14에서 테스트되었습니다.

//--Dialog
usr = New Window("Using List Boxes", <<MODAL></MODAL>Re: 다양한 관찰을 선택하기 위한 동적 대화 상자안녕 @pmroz
답장을 보내 주셔서 감사합니다.
내 실제 데이터 세트에는 25개의 고유한 게임이 있는 1000개의 게임이 있고 또한 1.실내 2.실외 3.해당 없음의 세 가지 범주만 있습니다. 이 접근 방식을 사용하면 1000개의 게임마다 게임 유형을 선택해야 합니다. 유니크한 게임도 해봤는데 안되네요.
게임의 고유한 값만 표시하는 창을 가질 수 있습니까? 또한 고유한 게임의 수가 증가하면 게임의 고유한 값별로 게임유형을 선택하는 것이 번거롭기 때문에 게임의 다중선택을 허용한 후 모든 다중선택게임에 대해 게임유형을 선택하도록 해야 한다.Re: 다양한 관찰을 선택하기 위한 동적 대화 상자다음은 열 상자가 있는 테이블 상자를 사용하는 솔루션입니다.게임 유형에 맞게 조정하십시오.
dt = New Table( "Games", Add Rows( 7 ),
New Column( "Name", Character, "Nominal",
Set Values( {"A", "A", "A", "B", "C", "B", "D"} ) ),
New Column( "Game", Character( 16 ), "Nominal", Set Values(
{"Football", "chess", "Badminton", "Football", "Chess", "Table Tennis", "Nothing"} ) ),
new column("Game Type", Character, "Nominal")
);
game_list = dt:game << get values;
ngames = nitems(game_list);
selected_type = {};
type_list = {"No choice made", "Outdoor", "Indoor", "Nothing"};
game_type_cb = {};
game_type_colb = col box("Game Type");
for (i = 1, i <= ngames, i++,
selected_type[i] = "No choice made";
game_type_cb[i] = combo box(type_list);
game_type_colb << append(game_type_cb[i]);
);
nw = new window("Game Type Setting",
panel box("Select game type for each game",
tb = table box(
string col box("Game", game_list),
game_type_colb
),
),
panel box("Actions",
hlistbox(
okb = button box("OK",
for (i = 1, i <= ngames, i++,
selected_type[i] = game_type_cb[i] << get selected();
dt:game type[i] = selected_type[i];
);
show(selected_type);
nw << close window;
),
canb = button box("Cancel",
nw << close window;
),
)
)
);