檢視原始碼 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().

等同於 create(This, Parent, [])

-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.

銷毀物件

連結到此函式

getMinimumPaneSize(This)

檢視原始碼
-spec getMinimumPaneSize(This) -> integer() when This :: wxSplitterWindow().

傳回目前最小窗格大小(預設為零)。

請參閱:setMinimumPaneSize/2

-spec getSashGravity(This) -> number() when This :: wxSplitterWindow().

傳回目前分隔條重力。

請參閱:setSashGravity/2

-spec getSashPosition(This) -> integer() when This :: wxSplitterWindow().

傳回目前分隔條位置。

請參閱:setSashPosition/3

-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().

傳回右/下窗格。

連結到此函式

initialize(This, Window)

檢視原始碼
-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/2splitVertically/4splitHorizontally/4 中的其中一個函式,以設定窗格。您可以建立兩個視窗,其中一個在未顯示時隱藏;或者您可以根據需要建立和刪除第二個窗格。

請參閱

連結到此函式

replaceWindow(This, WinOld, WinNew)

檢視原始碼
-spec replaceWindow(This, WinOld, WinNew) -> boolean()
                       when
                           This :: wxSplitterWindow(),
                           WinOld :: wxWindow:wxWindow(),
                           WinNew :: wxWindow:wxWindow().

這個函式會用另一個視窗取代 wxSplitterWindow 管理的其中一個視窗。

一般來說,最好使用它,而不是呼叫 unsplit/2 然後重新分割視窗,因為它會導致較少的閃爍(如果有的話)。無論分隔器有一個或兩個視窗,都可以呼叫此函式。

兩個參數都應該是非 NULL 的,而且 winOld 必須指定分隔器管理的其中一個視窗。如果參數不正確或無法取代視窗,則會傳回 false。否則,此函式會傳回 true,但請注意,它不會刪除取代的視窗,您可能希望自行刪除。

請參閱:getMinimumPaneSize/1

連結到此函式

setMinimumPaneSize(This, PaneSize)

檢視原始碼
-spec setMinimumPaneSize(This, PaneSize) -> ok when This :: wxSplitterWindow(), PaneSize :: integer().

設定最小窗格大小。

備註:預設最小窗格大小為零,這表示可以透過拖曳分隔條將任一窗格縮小到零,從而移除其中一個窗格。為了防止這種行為(並否決超出範圍的分隔條拖曳),請設定最小大小,例如 20 像素。如果在建立分隔視窗時使用 wxSP_PERMIT_UNSPLIT 樣式,即使最小大小不是零,也可以取消分割視窗。

請參閱:getMinimumPaneSize/1

連結到此函式

setSashGravity(This, Gravity)

檢視原始碼
-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

連結到此函式

setSashPosition(This, Position)

檢視原始碼
-spec setSashPosition(This, Position) -> ok when This :: wxSplitterWindow(), Position :: integer().

等同於 setSashPosition(This, Position, [])

-spec setSashPosition(This, Position, [Option]) -> ok
                         when
                             This :: wxSplitterWindow(),
                             Position :: integer(),
                             Option :: {redraw, boolean()}.

設定分隔條位置。

備註:目前不會檢查超出範圍的值。

請參閱:getSashPosition/1

連結到此函式

setSplitMode(This, Mode)

檢視原始碼
-spec setSplitMode(This, Mode) -> ok when This :: wxSplitterWindow(), Mode :: integer().

設定分割模式。

備註:只會設定內部變數;不會更新顯示。

請參閱

連結到此函式

splitHorizontally(This, Window1, Window2)

檢視原始碼
-spec splitHorizontally(This, Window1, Window2) -> boolean()
                           when
                               This :: wxSplitterWindow(),
                               Window1 :: wxWindow:wxWindow(),
                               Window2 :: wxWindow:wxWindow().

等同於 splitHorizontally(This, Window1, Window2, [])

-spec splitHorizontally(This, Window1, Window2, [Option]) -> boolean()
                           when
                               This :: wxSplitterWindow(),
                               Window1 :: wxWindow:wxWindow(),
                               Window2 :: wxWindow:wxWindow(),
                               Option :: {sashPosition, integer()}.

初始化分隔視窗的頂部和底部窗格。

如果子視窗目前隱藏,則會顯示。

傳回值:如果成功,則傳回 true,否則傳回 false(視窗已分割)。

備註:如果您希望最初檢視兩個窗格,則應呼叫此函式。它也可以在任何後續時間呼叫,但應用程式應使用 isSplit/1 檢查視窗目前是否未分割。

請參閱

連結到此函式

splitVertically(This, Window1, Window2)

檢視原始碼
-spec splitVertically(This, Window1, Window2) -> boolean()
                         when
                             This :: wxSplitterWindow(),
                             Window1 :: wxWindow:wxWindow(),
                             Window2 :: wxWindow:wxWindow().

等同於 splitVertically(This, Window1, Window2, [])

-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().

使分隔條和子窗格的所有擱置中的大小調整立即生效。

這類調整大小通常會在閒置時間進行,以便等待版面配置完成。但是,這可能會導致在視窗顯示後調整窗格大小時出現無法接受的閃爍。為了解決這個問題,您可以在顯示最上層視窗之前,執行視窗版面配置(例如,傳送大小事件至父視窗),然後呼叫此函式。