檢視原始碼 wxComboBox (wx v2.4.3)

組合框 (combobox) 類似於編輯控制項和列表框的組合。

它可以顯示為帶有可編輯或唯讀文字欄位的靜態列表;或帶有文字欄位的下拉式列表;或根據平台和 wxCB_READONLY 樣式的存在,顯示為沒有文字欄位的下拉式列表。

組合框只允許單選。組合框的項目編號從零開始。

如果您需要自訂的組合框,請參考 wxComboCtrl (在 wx 中未實作)、wxOwnerDrawnComboBox (在 wx 中未實作)、wxComboPopup (在 wx 中未實作) 和已可使用的 wxBitmapComboBox (在 wx 中未實作)。

請參考 wxTextEntry (在 wx 中未實作) 文件,以取得關於組合框文字輸入部分的操作方法說明,並參考 wxItemContainer (在 wx 中未實作),以取得關於字串列表的操作方法說明。請注意,至少在 MSW 下,如果 wxComboBox 包含僅大小寫不同的字串,其行為不正確,因此可移植程式應避免將此類字串加入此控制項。

樣式

此類別支援下列樣式

  • wxCB_SIMPLE:建立一個永久顯示列表的組合框。僅限 Windows。

  • wxCB_DROPDOWN:建立一個下拉式列表的組合框。僅限 MSW 和 Motif。

  • wxCB_READONLY:具有此樣式的組合框的行為類似於 wxChoice (並且可能看起來也一樣,儘管這取決於平台),也就是說,它允許使用者從選項列表中選擇,但不允許輸入列表中不存在的值。

  • wxCB_SORT:依字母順序排序列表中的項目。

  • wxTE_PROCESS_ENTER:控制項將產生 wxEVT_TEXT_ENTER 事件,該事件可以由程式處理。否則,也就是說,如果根本沒有指定此樣式,或者使用了它,但沒有此事件的事件處理常式,或者呼叫 wxEvent:skip/2 的事件處理常式為了避免覆寫預設處理,則按下 Enter 鍵將由控制項內部處理或用於啟用對話方塊的預設按鈕 (如果有的話)。

參見

此類別繼承自下列類別,並可使用其函式:

wxWidgets 文件:wxComboBox

事件

由此類別發出的事件類型

摘要

函式

如果選取範圍可以複製到剪貼簿,則傳回 true。

如果選取範圍可以剪下到剪貼簿,則傳回 true。

如果剪貼簿的內容可以貼到文字控制項,則傳回 true。

如果存在重做功能並且可以重做上次操作,則傳回 true。

如果存在復原功能並且可以復原上次操作,則傳回 true。

將選取的文字複製到剪貼簿。

將選取的文字複製到剪貼簿,並從控制項中移除。

銷毀物件

傳回文字控制項中最後一個位置的從零開始的索引,它等於控制項中的字元數。

取得控制項的內容。

預設建構函式。

建構函式,建立並顯示組合框。

將文字從剪貼簿貼到文字項目。

如果存在重做功能並且可以重做上次操作,則重做上次操作。

移除從第一個給定位置開始,直到 (但不包含) 最後一個位置的字元的文字。

將從第一個位置開始,直到 (但不包含) 最後一個位置的字元的文字,替換為給定的文字。

將插入點設定在給定的位置。

將插入點設定在文字控制項的末尾。

將選取範圍設定為給定的項目 n,如果 n == wxNOT\_FOUND,則完全移除選取範圍。

設定組合框文字欄位的文字。

如果存在復原功能並且可以復原上次操作,則復原上次操作。

類型

-type wxComboBox() :: wx:wx_object().

函式

-spec canCopy(This) -> boolean() when This :: wxComboBox().

如果選取範圍可以複製到剪貼簿,則傳回 true。

-spec canCut(This) -> boolean() when This :: wxComboBox().

如果選取範圍可以剪下到剪貼簿,則傳回 true。

-spec canPaste(This) -> boolean() when This :: wxComboBox().

如果剪貼簿的內容可以貼到文字控制項,則傳回 true。

在某些平台 (Motif、GTK) 上,這是一個近似值,如果控制項可編輯,則傳回 true,否則傳回 false。

-spec canRedo(This) -> boolean() when This :: wxComboBox().

如果存在重做功能並且可以重做上次操作,則傳回 true。

-spec canUndo(This) -> boolean() when This :: wxComboBox().

如果存在復原功能並且可以復原上次操作,則傳回 true。

-spec copy(This) -> ok when This :: wxComboBox().

將選取的文字複製到剪貼簿。

此函式的連結

create(This, Parent, Id, Value, Pos, Size, Choices)

檢視原始碼
-spec create(This, Parent, Id, Value, Pos, Size, Choices) -> boolean()
                when
                    This :: wxComboBox(),
                    Parent :: wxWindow:wxWindow(),
                    Id :: integer(),
                    Value :: unicode:chardata(),
                    Pos :: {X :: integer(), Y :: integer()},
                    Size :: {W :: integer(), H :: integer()},
                    Choices :: [unicode:chardata()].

等同於 create(This, Parent, Id, Value, Pos, Size, Choices, [])

-spec create(This, Parent, Id, Value, Pos, Size, Choices, [Option]) -> boolean()
                when
                    This :: wxComboBox(),
                    Parent :: wxWindow:wxWindow(),
                    Id :: integer(),
                    Value :: unicode:chardata(),
                    Pos :: {X :: integer(), Y :: integer()},
                    Size :: {W :: integer(), H :: integer()},
                    Choices :: [unicode:chardata()],
                    Option :: {style, integer()} | {validator, wx:wx_object()}.
-spec cut(This) -> ok when This :: wxComboBox().

將選取的文字複製到剪貼簿,並從控制項中移除。

-spec destroy(This :: wxComboBox()) -> ok.

銷毀物件

此函式的連結

getInsertionPoint(This)

檢視原始碼
-spec getInsertionPoint(This) -> integer() when This :: wxComboBox().

wxTextCtrl:getInsertionPoint/1 相同。

注意:在 wxMSW 下,如果組合框沒有焦點,此函式始終傳回 0。

-spec getLastPosition(This) -> integer() when This :: wxComboBox().

傳回文字控制項中最後一個位置的從零開始的索引,它等於控制項中的字元數。

-spec getValue(This) -> unicode:charlist() when This :: wxComboBox().

取得控制項的內容。

請注意,對於多行文字控制項,即使在 Windows 下,其中在原生控制項中以 \r\n 序列分隔,這些行也將以 (Unix 樣式) \n 字元分隔。

-spec new() -> wxComboBox().

預設建構函式。

-spec new(Parent, Id) -> wxComboBox() when Parent :: wxWindow:wxWindow(), Id :: integer().

等同於 new(Parent, Id, [])

-spec new(Parent, Id, [Option]) -> wxComboBox()
             when
                 Parent :: wxWindow:wxWindow(),
                 Id :: integer(),
                 Option ::
                     {value, unicode:chardata()} |
                     {pos, {X :: integer(), Y :: integer()}} |
                     {size, {W :: integer(), H :: integer()}} |
                     {choices, [unicode:chardata()]} |
                     {style, integer()} |
                     {validator, wx:wx_object()}.

建構函式,建立並顯示組合框。

參見:create/8

-spec paste(This) -> ok when This :: wxComboBox().

將文字從剪貼簿貼到文字項目。

-spec redo(This) -> ok when This :: wxComboBox().

如果存在重做功能並且可以重做上次操作,則重做上次操作。

如果沒有重做功能,則不執行任何操作。

此函式的連結

remove(This, From, To)

檢視原始碼
-spec remove(This, From, To) -> ok when This :: wxComboBox(), From :: integer(), To :: integer().

移除從第一個給定位置開始,直到 (但不包含) 最後一個位置的字元的文字。

此函式會將目前的插入點位置放在 to 作為副作用。

此函式的連結

replace(This, From, To, Value)

檢視原始碼
-spec replace(This, From, To, Value) -> ok
                 when
                     This :: wxComboBox(),
                     From :: integer(),
                     To :: integer(),
                     Value :: unicode:chardata().

將從第一個位置開始,直到 (但不包含) 最後一個位置的字元的文字,替換為給定的文字。

此函式會將目前的插入點位置放在 to 作為副作用。

此函式的連結

setInsertionPoint(This, Pos)

檢視原始碼
-spec setInsertionPoint(This, Pos) -> ok when This :: wxComboBox(), Pos :: integer().

將插入點設定在給定的位置。

此函式的連結

setInsertionPointEnd(This)

檢視原始碼
-spec setInsertionPointEnd(This) -> ok when This :: wxComboBox().

將插入點設定在文字控制項的末尾。

這等同於使用 getLastPosition/1 引數呼叫 setInsertionPoint/2

-spec setSelection(This, N) -> ok when This :: wxComboBox(), N :: integer().

將選取範圍設定為給定的項目 n,如果 n == wxNOT\_FOUND,則完全移除選取範圍。

請注意,這不會導致發出任何命令事件,也不會取消選取支援多重選取的控制項中的任何其他項目。

參見

此函式的連結

setSelection(This, From, To)

檢視原始碼
-spec setSelection(This, From, To) -> ok when This :: wxComboBox(), From :: integer(), To :: integer().

wxTextCtrl:setSelection/3 相同。

-spec setValue(This, Text) -> ok when This :: wxComboBox(), Text :: unicode:chardata().

設定組合框文字欄位的文字。

對於具有文字輸入欄位的正常、可編輯的組合框,呼叫此方法將產生 wxEVT_TEXT 事件,與 wxTextCtrl:setValue/2 的行為一致,如果不需要,請使用 wxTextCtrl:changeValue/2

對於具有 wxCB_READONLY 樣式的控制項,此方法的行為略有不同:字串必須在組合框選項列表中 (此檢查不區分大小寫),並且在這種情況下 不會產生 wxEVT_TEXT

-spec undo(This) -> ok when This :: wxComboBox().

如果存在復原功能並且可以復原上次操作,則復原上次操作。

如果沒有復原功能,則不執行任何操作。