在填充 Col 列表框时需要帮助我的应用程序 GUI 的一部分有一个打开表的按钮,以及一个我需要用该表中的列填充的列列表框。
如果我先打开表格,然后像在脚本索引中修改的示例中那样创建 Col Lis 框,一切正常:
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,然后打开表格,它停止工作。 这是真实代码的简化版本,但它有同样的问题 - 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;
);
我究竟做错了什么? 我怎样才能让它工作?
脚本回复:在填充列列表框方面需要帮助好的,看起来在创建 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;
);回复:在填充列列表框方面需要帮助由于我使用此 Col 列表框使用按钮和另一个 Col 列表框(在任何平台中)以许多不同的角色投射列,我需要重新创建许多 col 列表框,具有不同的设置等。所以我写了一个通用函数为了那个原因:
refreshDisplayBox = Function({dt, box, expr},
parent = box << Parent;
box << Delete Box;
parent << Append(box = expr);
Return (box);
);如果在 expr 中使用 dt 来重新创建显示框,则此处需要 dt。 无论您在函数外部使用的该表的句柄如何,它都会被传递到函数中。 只需要记住用“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;
);
让我知道这是否是一种有效的方法。