列リスト ボックスの入力についてサポートが必要ですアプリの GUI の一部には、テーブルを開くボタンと、そのテーブルの列を入力する必要がある列リスト ボックスがあります。
最初にテーブルを開いてから、Scripting Index のこの変更された例のように Col Lis Box を作成すると、すべてが正常に動作します。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
New Window( "Col List Box Example",
lb = Col List Box()
);
lb << Append (dt << Get Column Names);
ただし、テーブルを開くボタンがある GUI を使用してウィンドウを作成した場合、つまり 最初に列リストボックスを作成してからテーブルを開くと、機能しなくなります。 これは実際のコードの簡略化されたバージョンですが、Col List Box に列名が入力されないという同じ問題があります。
Names Default To Here( 1 );
open = Expr(dt = Open( "$SAMPLE_DATA/Big Class.jmp" ); lb << Append (dt << Get Column Names););
gui = Expr(V List Box(btn = Button Box ("OPEN", open), lb = Col List Box()));
New Window( "Col List Box Example",
gui;
);
私の何が間違っているのでしょうか? どうすれば機能させることができますか?
自動化とスクリプト作成品質およびプロセスエンジニアリングRe: 列リスト ボックスの入力についてサポートが必要ですはい、これはこれにアプローチする有効な方法です。 同じ結果を得る別の方法を示すために、これを少し書き直しました。
Names Default To Here( 1 );
LoadTable = function( {dtname}, {dt, lbnew},
dt = open("$SAMPLE_DATA/" || dtname);
lbnew = Col List Box(dt, all);
window:lb << Delete Box;
window:pb << Append( window:lb = lbnew );
win << Bring Window to Front;
);
win = New Window( "Col List Box Example",
vlb = V List Box(
H List Box(
window:clb = List Box( { "Big Class.jmp", "Iris.jmp" } ),
window:btn = Button Box ("OPEN", LoadTable((window:clb << Get Selected)[1]) )
),
window:pb = Panel Box("Column List",
window:lb = Col List Box()
)
)
);Re: 列リスト ボックスの入力についてサポートが必要ですこの Col リスト ボックスを使用して、ボタンと別の Col リスト ボックス (他のプラットフォームと同様) を使用してさまざまな役割で列をキャストするため、さまざまな設定などを使用して多くの Col リスト ボックスを再作成する必要があります。 そこで、ユニバーサル関数を作成しました。そのために:
refreshDisplayBox = Function({dt, box, expr},
parent = box << Parent;
box << Delete Box;
parent << Append(box = expr);
Return (box);
);dt は、表示ボックスを再作成するために expr で使用される場合に備えてここで必要になります。 関数の外で使用しているテーブルのハンドルに関係なく、関数に渡されます。 そのためには、すべての式を「dt」で書くことを忘れないでください。
すると、スクリプトは次のようになります。
Names Default To Here( 1 );
refreshDisplayBox = Function({dt, box, expr},
parent = box << Parent;
box << Delete Box;
parent << Append(box = expr);
Return (box);
);
colListExpr = Expr(Col List Box(dt/*use generic dt*/, all));
open = Expr(dtEXT/*different table name*/ = Open( "$SAMPLE_DATA/Big Class.jmp" ); lb = refreshDisplayBox(dtEXT/*pass it into the function*/, lb, colListExpr));
gui = Expr(V List Box(btn = Button Box ("OPEN", open), pb = Panel Box("Column List", lb = Col List Box())));
New Window( "Col List Box Example",
gui;
);
これが有効なアプローチかどうか教えてください。
Re: 列リスト ボックスの入力についてサポートが必要ですColListBox が作成されると、現在のデータ テーブルに接続されているように見えます。 そして、その DT からのみ列を追加できます。
したがって、同じ COlLIstBox 内の GUI で異なる DT の列を表示する必要があるため、毎回再定義する必要があります。 古いものを削除し、代わりに新しいものを作成します。
これは機能しているようですが、より良い解決策があれば教えてください。
Names Default To Here( 1 );
open = Expr(dt = Open( "$SAMPLE_DATA/Big Class.jmp" ); refreshColList;);
refreshColList = Expr(
(pb << Child) << Delete Box;
pb << Append(lb = Col List Box(dt, all));
);
gui = Expr(V List Box(btn = Button Box ("OPEN", open), pb = Panel Box("Column List", lb = Col List Box())));
New Window( "Col List Box Example",
gui;
);