開いているすべてのテーブルを表示するリストボックス開いているすべてのデータテーブルを一覧表示し、新しく開いた/新しく閉じたテーブルで自動的に更新されるリストボックスを作成しようとしています。 以下のスクリプトから始めましたが、何らかの理由で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関数は、加算ごとに1回実行されます
- データテーブルを閉じても、リストボックスからは削除されません。
- 2番目のデータテーブルを閉じると、前に閉じたデータテーブルがリストボックスから削除されます。
- リストボックスを閉じてJSLをもう一度実行し、データテーブルを閉じると、f2関数が2回実行されます。JSLの最初の実行からのf2関数が実行され、続いてf2関数の2番目のインスタンスが実行されます。これは、Show()ステートメントを変更することで表示できます。Showステートメントがから変更された場合
Show( "Close" );
にShow( "Close 2" );
データテーブルを閉じると、Show()ステートメントの両方のバージョンが表示されます。
- その後のJSLの実行により、f2関数のコピーが追加され、データテーブルが閉じるたびに各コピーが実行されます。
- ClearGlobalsとClearSymbolsは、以前のバージョンの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」句をどのように設定するかも示していただけますか?