열려 있는 모든 테이블을 보여주는 목록 상자열린 모든 데이터 테이블을 나열하고 새로 열리거나 새로 닫힌 테이블로 자동 업데이트되는 목록 상자를 만들려고합니다. 아래 스크립트로 시작했지만 어떤 이유로 onClose 기능이 작동하지 않습니다.
도움을 주셔서 감사합니다 
names default to here(1);
f1 = function ({Temp_list},
T_list = Temp_list << get name();
lb << remove all;
lb << append (T_list)
);
f2 = function ({Temp_list},
T_list = Temp_list << get name();
lb << remove all;
lb << append (T_list)
);
asub = Subscribe to data table list( , onopen(f1));
Subscribe to data table list(asub , onclose(f2));
nw = new window("Trial",show menu(0),
vlistbox(
T_list = get data table list ();
lb = listbox(T_list);
)
);
스크립팅Re: 열려 있는 모든 테이블을 보여주는 목록 상자아래 JSL을 사용하여 발견한 내용은 다음과 같습니다.
Names Default To Here( 1 );
f2 = Function( {Temp_list},
T_list = Get Data Table List();
lb << remove all;
lb << append( T_list );
show("Close");
);
f1 = Function( {Temp_list},
T_list = Get Data Table List();
lb << remove all;
lb << append( T_list );
show("add");
);
asub = Subscribe to Data Table List( , onopen( f1 ) );
Subscribe to Data Table List(asub , onclose( f2 ) );
nw = New Window( "Trial",
Show Menu( 0 ),
V List Box(
T_list = Get Data Table List();
lb = List Box( T_list );
)
);
- 생성된 목록 상자는 오류 없이 새 데이터 테이블을 추가합니다.
- f1 함수는 각 추가에 대해 한 번 실행됩니다.
- 데이터 테이블을 닫으면 목록 상자에서 제거되지 않습니다.
- 두 번째 데이터 테이블을 닫으면 이전에 닫은 데이터 테이블이 목록 상자에서 제거됩니다.
- 목록 상자를 닫고 JSL을 두 번째로 실행하고 데이터 테이블을 닫으면 f2 함수가 두 번 실행됩니다.JSL의 첫 번째 실행에서 f2 함수가 실행되고 f2 함수의 두 번째 인스턴스가 실행됩니다.이것은 Show() 문을 변경하여 표시할 수 있습니다.Show 문이 다음에서 변경된 경우
Show( "Close" );
에게Show( "Close 2" );
데이터 테이블을 닫으면 Show() 문의 두 버전이 모두 표시됩니다.
- JSL의 후속 실행은 f2 함수의 추가 복사본을 추가하며 각 데이터 테이블이 닫힐 때마다 각 복사본이 실행됩니다.
- Clear Globals 및 Clear Symbols는 f2 함수의 이전 버전을 제거하지 않습니다.
이것은 분명히 JMP 버그이며 JMP 지원 담당자에게 보내야 합니다.
나는 그들에게 버그를 제출했습니다.
Re: 열려 있는 모든 테이블을 보여주는 목록 상자감사 해요 @txnelson !! 그것이 바로 내가 만난 버그입니다. 그 사이에 이에 대한 해결 방법을 찾아야 할 것 같습니다.
Re: 열려 있는 모든 테이블을 보여주는 목록 상자lb에 새 값을 추가할 수 있어야 하며 인덱스가 포함된 닫힌 값만 제거할 수 있어야 합니다(색인을 가져오기 위해 Contains() 사용) 또한 함수에 로컬 변수를 추가했습니다.
Names Default To Here(1);
f1 = function ({Temp_list}, {tableList},
tableList = Temp_list << get name();
lb << append (tableList)
);
f2 = function ({Temp_list}, {tableList},
tableList = Temp_list << get name();
lb << Remove Item(Contains(lb << get items, tableList));
);
asub = Subscribe to data table list( , onopen(f1));
Subscribe to data table list(asub , OnClose(f2));
nw = new window("Trial",show menu(0),
vlistbox(
lb = listbox(get data table list ());
)
);Re: 열려 있는 모든 테이블을 보여주는 목록 상자감사 해요 @jthi ! 작동합니다!
괜찮으시다면 "OnRename" 절도 어떻게 설정하는지 보여주시겠습니까?