JSL:恢复动态显示框中的PanelBox尺寸<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Panel Box() 对象会随着内容的扩展自动调整其大小。 然而,事实似乎恰恰相反。 在下面的示例脚本中,按右侧单选按钮会随着复选框描述符的展开而拉伸窗口。 重新选择左侧单选按钮会导致描述符变短,但面板框(和窗口)仍保持其展开状态。
如何强制面板盒恢复到原来的大小? 或者还有其他在这方面“更智能”的展示盒类型吗?
我尝试将原始大小保存在变量中(使用 pb1 << Get Size),并在重新选择单选按钮 1 时应用该大小,但 Panel Box() 似乎无法识别 Set Size() 消息。
斯特=
{ “案例 1:低剂量 非常长的描述 非常长的描述 非常长的描述” ,
“案例 2:高剂量 非常长的描述 非常长的描述 非常长的描述”
} ;
短字符串=评估清单( {左边(斯特[ 1 ] , 6 ) ,左边(斯特[ 2 ] , 6 )} ) ;
PB1 =表达式(面板盒( ,
HLB1 = V 列表框(待定=文本框( 「选择案例」 ) ,
CB =复选框(短字符串) ,
病毒LB1 = V 列表框(
间隔盒() ,
H 列表框(
RB2 =收音机盒(
「显示名称」 ,
CB <<删除;
病毒LB1 <<前置( CB =复选框(短字符串))) ,
RB1 =收音机盒(
“显示说明” ,
CB <<删除;
病毒LB1 <<前置( CB =复选框(斯特))))))))
) ;
铅2 =表达式(
面板盒( ,
V 列表框(
按钮盒( “跑步” ) ,
按钮盒( “取消” , <<关闭窗口) ,
间隔盒()
))) ;
新窗户( “例子” ,
HLB = H 列表框( PB1 ,铅2 )
) ;
RB2 <<团体( RB1 ) ;
JSL:恢复动态显示框中的PanelBox尺寸谢谢戴夫! 有用。 我使用 set content size() 而不是 set window size() 探索了类似的解决方案。 这些命令似乎是可以互换的,至少在这个例子中是这样。
还有一个小怪癖。 在两个单选按钮之间切换时,窗口设置每隔第二次或第三次就会失败。 然后窗口将变得小于其内容。 这个问题在你和我的解决方案中都会出现。 我认为这是代码执行中的一些异步造成的,例如,在 prepend() 完成之前获取窗口大小。 然而,在 rb1 按钮脚本中插入 Wait(0.01) 似乎可以消除这种特殊行为。 请参阅下面的摘录。
也许这是机器特定的,所以这种奇怪的情况可能不会发生在每个人身上。 我在速度相当快的 Mac Pro 上运行 JMP 9.02。
...如果 (NItems(ss_large)==0, 等待(0.01);
ss_large = nw << 获取窗口大小
,
nw << 设置窗口大小(ss_large[1],ss_large[2])
)...
再次感谢!
回复:JSL:恢复动态显示框中的PanelBox尺寸我不认为问题出在面板盒上 - 当你拆下面板盒时,你也会遇到同样的问题。
窗口本身会增加其大小以容纳内容。
因此,如果您将调整大小应用于窗口,您提出的解决方案就有效。但是,一旦调整窗口大小,它就不会自行调整大小,因此您需要控制调整大小以使其变大或变小。
这段代码似乎有效...
str = {“情况1:低剂量非常长的描述非常长的描述非常长的描述”,
“案例 2:高剂量 非常长的描述 非常长的描述 非常长的描述”};
Short_str = 评估列表( {Left( str[1], 6 ), Left( str[2], 6 )} );
ss_small = {};
ss_large = {};
pb1 = 表达式(
边框框( ,
hlb1 = V 列表框(
tb = 文本框("选择案例"),
cb = 复选框( Short_str ),
vlb1 = V 列表框(
间隔盒(),
H 列表框(
rb2 = 单选框(
“显示名称”,
cb << 删除;
vlb1 << 前置(
cb = 复选框(
短字符串
)
);
nw << 设置窗口大小(ss_small[1],ss_small[2])
),
rb1 = 单选框(
“显示说明”,
cb << 删除;
vlb1 << 前置( cb = 复选框( str ) );
如果 (NItems(ss_large)==0,
ss_large = nw << 获取窗口大小
,
nw << 设置窗口大小(ss_large[1],ss_large[2])
)
)
)
)
)
)
);
pb2 = Expr( 面板框( , V 列表框( 按钮框( "运行" ), 按钮框( "取消", <<关闭窗口 ), 间隔框() ) ) );
西北=新窗口(“示例”,hlb = H列表框(pb1,pb2));
rb2 << 组( rb1 );
ss_small = nw <<获取窗口大小;
戴夫