私のコードは以下のようなもので、オプション 1 と 2 を 1 つずつクリックすると正常に機能しますが、オプション 1 を連続してクリックすると複数のリスト ボックスが生成され、ユーザーが混乱してしまいます。 コードを最適化するにはどうすればよいでしょうか? どうもありがとう。
もう 2 つの質問は次のとおりです。
1. パネル ボックスを削除すると、ボックス化された (テキスト ボックスなど) も削除されるのでしょうか、それとも表示されなくなるのでしょうか?
2. モーダルウィンドウの階層を取得するにはどうすればよいですか?
dt = Current Data Table();
If( Is Empty( dt ),
Stop(),
nc = N Col( dt )
);
openDTs = {};
For( i = 1, i <= N Table(), i++,
Insert Into( openDTs, Data Table( i ) << getname )
);
tableSelBox = Expr(
//Panel Box( "Select Limit Table",
lbtableSel = List Box( openDTs, width( 150 ), nlines( 6 ), maxselected( 1 ), ),
//),
);
nw = New Window( "Auto Plot",
modal,
hb = H List Box(
V List Box(
Panel Box( "Mode Selection",
Spacer Box( size( 100, 0 ) ),
rbMethod = Radio Box(
{"With Current Limit", "Without Current Limit"},
rbSel = rbMethod << get selected;
dbAfterpb = colSelLstBox << Next();
If( rbSel == "With Current Limit",
pb << Sib Append( tableSelBox ),
);
If( rbSel == "Without Current Limit",
dbAfterpb << Delete;
lbtableSel << Delete
),
),
),
Panel Box( "Action",
Spacer Box( size( 100, 0 ) ),
okBb = Button Box( "OK", Stop() ),
cancelBb = Button Box( "Cancel", Stop() ),
),
),
pb = Panel Box( "Select Columns",
colSelLstBox = Filter Col Selector( dt, nlines( Min( nc, 13 ) ) ),
),
pb << Sib Append( tableSelBox ),
),
);

ユーザーに何ができるようになりたいですか?
1.Panel Box() を削除すると、内部のオブジェクトも削除される必要があります (パネル ボックスで << Delete Box を使用し、その内部の古い参照から何が返されるかを試してください。それらは DisplayBox[ ではなく DisplayBox[] のようなものです) FilterColSelector] など)。
2. どの階層ですか? ツリー構造またはプロパティを表示したい場合は、モーダルを一時的に削除するのが最も簡単なオプションです
これは私だけかもしれませんが、スクリプトに属するテーブルを共有していただければ、問題を理解しやすくなるでしょう。
「現在の制限あり」オプションをクリックすると、「列の選択」パネルの右側に新しいリストボックスが表示されます。「現在の制限なし」オプションをクリックするとリストボックスが削除され、オプション1をクリックするとリストボックスが削除されます。 -> オプション 2 --> オプション 1 --> オプション 2、うまくいきます。 しかし、option1 を複数回クリックすると、複数のリスト ボックスが表示され、ユーザーが混乱してしまいます。下の画像は、「option 1」を 4 回クリックした後に 4 つのリスト ボックスが生成されることを示しています。

混乱させてしまってごめんなさい。 私が遭遇した問題は特定のテーブルに関連するものではなく、UI 開発の問題です。
ラジオ ボックスを使用して表示ボックスを生成する方法を意味します。たとえば、オプション 1 をクリックするとリスト ボックス A が生成され、オプション 2 をクリックするとリスト ボックス B が生成され、オプション 3 をクリックすると何も行われません。 さらに、オプション 1 をクリックしてからオプション 2 をクリックすると、リスト ボックス A が削除され、新しいリスト ボックス B が表示されます。
私のコードではすべてがうまく機能しますオプション 1 --> オプション 2 --> オプション 1 --> オプション 2.... をクリックすると、オプション 1 を複数回クリックすると、複数のリスト ボックスが表示され、ユーザーが混乱します。以下の画像です。 「オプション 1」を 4 回クリックすると、4 つのリスト ボックスが生成されることを示しています。

[現在の制限あり] が lbtableSel が空かどうかをチェックするオプションである場合、追加のチェックを追加できるかもしれません。
If(rbSel == "With Current Limit" & is empty(lbtableSel),
ありがとうございます。コードは非モーダル モードでも正常に動作します。
モーダル モードで、オプション 1 --> オプション 2 --> オプション 1 をクリックしてもリスト ボックスは表示されませんが、追加のオプション 2 --> オプション 1 を試してみると、リスト ボックスが表示されます。 調べたところ、colSelLstBoxパネルの後ろに非表示のリストボックスがあるようで、呼び出して削除することはできませんが、オプション2を2回操作すると最終的に削除されるので、オプション1は機能します。 興味深い....
モーダルモードでの最後の解決策は、size(0,0) スペーサーボックスを追加して、そのハンドラーを取得し、存在するかどうかを判断し、削除または生成できるようにすることです。