檢視原始碼 wxSplitterWindow (wx v2.4.3)
這個類別管理最多兩個子視窗。
目前的視圖可以透過程式碼(也許是從選單指令)分割成兩個,並透過程式碼或 wxSplitterWindow
使用者介面取消分割。
樣式
這個類別支援以下樣式
wxSP_3D: 繪製 3D 效果的邊框和分隔條。
wxSP_THIN_SASH: 繪製細分隔條。
wxSP_3DSASH: 繪製 3D 效果的分隔條(預設樣式的一部分)。
wxSP_3DBORDER: wxSP_BORDER 的同義詞。
wxSP_BORDER: 繪製標準邊框。
wxSP_NOBORDER: 沒有邊框(預設)。
wxSP_NO_XP_THEME: 在 Windows 下,關閉嘗試使用 Windows 主題繪製分隔器的功能,因此邊框和分隔條將採用 XP 之前的外觀。
wxSP_PERMIT_UNSPLIT: 始終允許取消分割,即使最小窗格大小不是零。
wxSP_LIVE_UPDATE: 不繪製 XOR 線,而是立即調整子視窗的大小。
請參閱
這個類別繼承自,並且可以使用來自以下類別的函式:
wxWidgets 文件:wxSplitterWindow
事件
從這個類別發出的事件類型
摘要
函式
用於兩階段建構的建立函式。
銷毀物件
傳回目前最小窗格大小(預設為零)。
傳回目前分隔條重力。
傳回目前分隔條位置。
取得分割模式。
傳回左/上或唯一的窗格。
傳回右/下窗格。
初始化分隔視窗,使其具有一個窗格。
如果視窗已分割,則傳回 true,否則傳回 false。
預設建構函式。
用於建立視窗的建構函式。
這個函式會用另一個視窗取代 wxSplitterWindow
管理的其中一個視窗。
設定最小窗格大小。
設定分隔條重力。
設定分隔條位置。
設定分割模式。
初始化分隔視窗的頂部和底部窗格。
初始化分隔視窗的左側和右側窗格。
取消分割視窗。
使分隔條和子窗格的所有擱置中的大小調整立即生效。
類型
-type wxSplitterWindow() :: wx:wx_object().
函式
-spec create(This, Parent) -> boolean() when This :: wxSplitterWindow(), Parent :: wxWindow:wxWindow().
-spec create(This, Parent, [Option]) -> boolean() when This :: wxSplitterWindow(), Parent :: wxWindow:wxWindow(), Option :: {id, integer()} | {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
用於兩階段建構的建立函式。
請參閱 new/2
以了解詳細資訊。
-spec destroy(This :: wxSplitterWindow()) -> ok.
銷毀物件
-spec getMinimumPaneSize(This) -> integer() when This :: wxSplitterWindow().
傳回目前最小窗格大小(預設為零)。
-spec getSashGravity(This) -> number() when This :: wxSplitterWindow().
傳回目前分隔條重力。
請參閱:setSashGravity/2
-spec getSashPosition(This) -> integer() when This :: wxSplitterWindow().
傳回目前分隔條位置。
-spec getSplitMode(This) -> wx:wx_enum() when This :: wxSplitterWindow().
取得分割模式。
請參閱
-spec getWindow1(This) -> wxWindow:wxWindow() when This :: wxSplitterWindow().
傳回左/上或唯一的窗格。
-spec getWindow2(This) -> wxWindow:wxWindow() when This :: wxSplitterWindow().
傳回右/下窗格。
-spec initialize(This, Window) -> ok when This :: wxSplitterWindow(), Window :: wxWindow:wxWindow().
初始化分隔視窗,使其具有一個窗格。
如果子視窗目前隱藏,則會顯示。
備註:如果您希望最初只在分隔視窗中檢視單一窗格,則應呼叫此函式。
請參閱
-spec isSplit(This) -> boolean() when This :: wxSplitterWindow().
如果視窗已分割,則傳回 true,否則傳回 false。
-spec new() -> wxSplitterWindow().
預設建構函式。
-spec new(Parent) -> wxSplitterWindow() when Parent :: wxWindow:wxWindow().
等同於 new(Parent, [])
。
-spec new(Parent, [Option]) -> wxSplitterWindow() when Parent :: wxWindow:wxWindow(), Option :: {id, integer()} | {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
用於建立視窗的建構函式。
備註:在使用這個建構函式之後,您必須建立一個或兩個子視窗,並將分隔視窗作為父視窗,然後呼叫 initialize/2
、splitVertically/4
和 splitHorizontally/4
中的其中一個函式,以設定窗格。您可以建立兩個視窗,其中一個在未顯示時隱藏;或者您可以根據需要建立和刪除第二個窗格。
請參閱
-spec replaceWindow(This, WinOld, WinNew) -> boolean() when This :: wxSplitterWindow(), WinOld :: wxWindow:wxWindow(), WinNew :: wxWindow:wxWindow().
這個函式會用另一個視窗取代 wxSplitterWindow
管理的其中一個視窗。
一般來說,最好使用它,而不是呼叫 unsplit/2
然後重新分割視窗,因為它會導致較少的閃爍(如果有的話)。無論分隔器有一個或兩個視窗,都可以呼叫此函式。
兩個參數都應該是非 NULL 的,而且 winOld
必須指定分隔器管理的其中一個視窗。如果參數不正確或無法取代視窗,則會傳回 false。否則,此函式會傳回 true,但請注意,它不會刪除取代的視窗,您可能希望自行刪除。
-spec setMinimumPaneSize(This, PaneSize) -> ok when This :: wxSplitterWindow(), PaneSize :: integer().
設定最小窗格大小。
備註:預設最小窗格大小為零,這表示可以透過拖曳分隔條將任一窗格縮小到零,從而移除其中一個窗格。為了防止這種行為(並否決超出範圍的分隔條拖曳),請設定最小大小,例如 20 像素。如果在建立分隔視窗時使用 wxSP_PERMIT_UNSPLIT 樣式,即使最小大小不是零,也可以取消分割視窗。
-spec setSashGravity(This, Gravity) -> ok when This :: wxSplitterWindow(), Gravity :: number().
設定分隔條重力。
備註:重力是真實因素,用於控制調整 wxSplitterWindow
大小時分隔條的位置。重力會告知 wxSplitterWindow
在調整大小時,左/上視窗會成長多少。範例值
0.0:只會自動調整底部/右側視窗的大小
0.5:兩個視窗都以相同的大小成長
1.0:只會成長左/上視窗。重力應該是介於 0.0 和 1.0 之間的實數值。分隔條重力的預設值為 0.0。該值與
wxSplitterWindow
之前(在引入重力之前)的行為相容。
請注意,當為新建立的分隔視窗設定分隔條重力時,通常需要使用 wxWindow:setSize/6
明確設定分隔器大小,以確保它對於其初始分隔條位置而言足夠大。否則,也就是說,如果視窗以預設的小尺寸建立,且稍後才調整為正確的大小,則初始分隔條位置將受到重力的影響,通常會導致重力為 1 時,分隔條位於最右側的位置。如需更多詳細資訊,請參閱分隔器範例中建立 wxSplitterWindow
的範例程式碼。
請參閱:getSashGravity/1
-spec setSashPosition(This, Position) -> ok when This :: wxSplitterWindow(), Position :: integer().
-spec setSashPosition(This, Position, [Option]) -> ok when This :: wxSplitterWindow(), Position :: integer(), Option :: {redraw, boolean()}.
設定分隔條位置。
備註:目前不會檢查超出範圍的值。
-spec setSplitMode(This, Mode) -> ok when This :: wxSplitterWindow(), Mode :: integer().
設定分割模式。
備註:只會設定內部變數;不會更新顯示。
請參閱
-spec splitHorizontally(This, Window1, Window2) -> boolean() when This :: wxSplitterWindow(), Window1 :: wxWindow:wxWindow(), Window2 :: wxWindow:wxWindow().
-spec splitHorizontally(This, Window1, Window2, [Option]) -> boolean() when This :: wxSplitterWindow(), Window1 :: wxWindow:wxWindow(), Window2 :: wxWindow:wxWindow(), Option :: {sashPosition, integer()}.
初始化分隔視窗的頂部和底部窗格。
如果子視窗目前隱藏,則會顯示。
傳回值:如果成功,則傳回 true,否則傳回 false(視窗已分割)。
備註:如果您希望最初檢視兩個窗格,則應呼叫此函式。它也可以在任何後續時間呼叫,但應用程式應使用 isSplit/1
檢查視窗目前是否未分割。
請參閱
-spec splitVertically(This, Window1, Window2) -> boolean() when This :: wxSplitterWindow(), Window1 :: wxWindow:wxWindow(), Window2 :: wxWindow:wxWindow().
-spec splitVertically(This, Window1, Window2, [Option]) -> boolean() when This :: wxSplitterWindow(), Window1 :: wxWindow:wxWindow(), Window2 :: wxWindow:wxWindow(), Option :: {sashPosition, integer()}.
初始化分隔視窗的左側和右側窗格。
如果子視窗目前隱藏,則會顯示。
傳回值:如果成功,則傳回 true,否則傳回 false(視窗已分割)。
備註:如果您希望最初檢視兩個窗格,則應呼叫此函式。它也可以在任何後續時間呼叫,但應用程式應使用 isSplit/1
檢查視窗目前是否未分割。
請參閱
-spec unsplit(This) -> boolean() when This :: wxSplitterWindow().
等同於 unsplit(This, [])
。
-spec unsplit(This, [Option]) -> boolean() when This :: wxSplitterWindow(), Option :: {toRemove, wxWindow:wxWindow()}.
取消分割視窗。
傳回值:如果成功,則傳回 true,否則傳回 false(視窗未分割)。
備註:此呼叫實際上不會刪除正在移除的窗格;它會呼叫 OnUnsplit()
(未在 wx 中實作),可以覆寫該函式以實現所需的行為。依預設,正在移除的窗格會隱藏。
請參閱
-spec updateSize(This) -> ok when This :: wxSplitterWindow().
使分隔條和子窗格的所有擱置中的大小調整立即生效。
這類調整大小通常會在閒置時間進行,以便等待版面配置完成。但是,這可能會導致在視窗顯示後調整窗格大小時出現無法接受的閃爍。為了解決這個問題,您可以在顯示最上層視窗之前,執行視窗版面配置(例如,傳送大小事件至父視窗),然後呼叫此函式。