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 <<取得視窗大小;
戴夫