按钮框列表 - 我刚刚单击了哪个按钮?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />我正在窗口中创建按钮框的排列列表(在脚本实际运行之前我不知道会有多少个按钮框),如下所示。显然,当我单击任何一个按钮时,我需要它来执行一项操作。然而,该操作将取决于按钮的数量 - 所以我需要知道我单击了哪个按钮......除非我忽略了一些明显的东西,否则我看不到一种简单的方法来确定它。谁能告诉我该怎么做?
Expr_Do_Something =表达式( /* 我可以在这里输入什么来告诉我按下了哪个按钮? */ ) ;
卢布=阵容框(恩科尔( 4 )) ;
为了(我= 1 ,我<= 12 ,我++,卢布<<附加(按钮盒( “按钮 ” ||字符(我) , Expr_Do_Something )) ) ;
西北=新窗户( “测试” ,卢布) ;
不幸的是,由于某些原因,我无法使用组合框等不同的控件来执行此操作,因为它只会返回我选择的项目。在我看来,我真正需要的是类似“当前活动按钮()<<获取按钮名称”命令,但我认为没有 - 我是对的吗?
非常感谢收到的任何建议。
[脚注:我刚刚发现几年前“Volf”、“Stig”和我自己之间的相关讨论,这可能会对此有所帮助https://communities.sas.com/message/42855#42855 ,但无论如何我都会保留这个问题,以防有其他方法]
消息编辑者:David Q/R
回复:按钮框列表 - 我刚刚点击了哪个按钮?我会在调用 expr_do_something 之前添加一个变量赋值。然后在 expr_do_something 内部检查这个变量。
表达式_做_某事= 表达式(/* 我可以在这里输入什么来告诉我按下了哪个按钮?*/);
这= 阵容盒(ncol(4));
为了(i=1, i<=12, i++,lub << append (按钮框( "按钮" || 字符 ( i ) ,which_button = i; Expr_Do_Something )));
nw = 新窗口 ( "测试" ,或) ;
回复:按钮框列表 - 我刚刚点击了哪个按钮?我希望无论单击哪个按钮,which_button 都是相同的(在本例中为 13)。
尽管我“感觉”应该有一个更简单的方法,但我得到的唯一解决方案是通过一些字符串操作和解析 lub<
做某事= “打印(lub[Buttonbox(^i^)]< ;
润滑脂= 阵容框( N 列( 4 ) ) ;
对于( i = 1 , i <= 12 , i ++,
评估(
解析(
“lub << append(按钮框( \!"按钮" || 字符( i ) || “\!” || "," ||
评估插入(执行某些操作) || “))”
)
)
);
nw = 新窗口 ( “测试” ,或) ;
回复:按钮框列表 - 我刚刚点击了哪个按钮?我对此心存疑虑——而且我几乎肯定会做类似的事情。我经常发现自己解决这类问题的方式是先把它们设置为文本,然后再进行解析,所以知道自己没有遗漏任何显而易见的东西,这让我很安心。
非常感谢!
回复:按钮框列表 - 我刚刚点击了哪个按钮?我不确定这是否还与你相关,但我认为我找到了一个更直接的解决方法:
Expr_Do_Something = expr<STRONG>(</STRONG>this << Get Button Name() <STRONG>)</STRONG>;<BR />lub = lineupbox<STRONG>(</STRONG>ncol<STRONG><SPAN>(</SPAN><SPAN>4</SPAN><SPAN>))</SPAN></STRONG>;<BR />for(i=1, i<=12, i++, lub<< append(Button Box("Button "|| char(i), << set Function(Function({this}, Expr_Do_Something)))));