列錶框顯示所有打開的表格我正在嘗試構建一個列錶框,它列出所有打開的數據表,並使用新打開/新關閉的表自動更新。 我已經開始使用下面的腳本,但由於某種原因 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);
)
);
腳本編寫回复:列錶框顯示所有打開的表格使用下面的 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 支持人員。
我已將錯誤提交給他們。
回复:列錶框顯示所有打開的表格謝謝@txnelson !! 這正是我遇到的錯誤。 我想與此同時,我將不得不為此找到解決方法。
回复:列錶框顯示所有打開的表格您應該能夠向 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 ());
)
);