檢視原始碼 wxControlWithItems (wx v2.4.3)
這是一個方便的類別,它繼承自 wxControl
和 wxItemContainer
(在 wx 中未實作)。
它被用作一些 wxWidgets 控制項 (wxChoice
和 wxListBox
) 的基礎。
這個類別繼承自以下類別,並可以使用它們的函式:
wxWidgets 文件:wxControlWithItems
摘要
函式
將項目附加到控制項中。
將項目附加到控制項中。
一次將多個項目附加到控制項中。
一次將多個項目附加到控制項中。
從控制項中移除所有項目。
從控制項中刪除一個項目。
尋找標籤與給定字串相符的項目。
傳回與給定項目關聯的客戶端資料指標(如果有的話)。
傳回控制項中的項目數量。
傳回所選項目的索引,如果沒有選取任何項目,則傳回 wxNOT\_FOUND
。
傳回具有給定索引的項目的標籤。
傳回所選項目的標籤,如果沒有選取任何項目,則傳回空字串。
將項目插入到控制項中。
將項目插入到控制項中。
一次將多個項目插入到控制項中。
一次將多個項目插入到控制項中。
如果控制項為空,則傳回 true,如果控制項有一些項目,則傳回 false。
這與 setSelection/2
相同,存在的原因僅是因為對於支援多重選取的控制項而言,它稍微更自然一些。
將給定的已型別的客戶端資料指標與給定項目關聯:當項目被刪除時(無論是透過使用 delete/2
明確刪除,還是當控制項本身被銷毀時隱含刪除),data
物件將被刪除。
將選取項目設定為給定的項目 n
,如果 n
== wxNOT\_FOUND
,則完全移除選取項目。
設定給定項目的標籤。
在控制項中選取具有指定字串的項目。
類型
-type wxControlWithItems() :: wx:wx_object().
函式
-spec append(This, Item) -> integer() when This :: wxControlWithItems(), Item :: unicode:chardata().
將項目附加到控制項中。
傳回值:傳回值是新插入項目的索引。請注意,如果控制項已排序(例如,具有 wxLB_SORT
或 wxCB_SORT
樣式),則此值可能與最後一個索引不同。
-spec append(This, Item, ClientData) -> integer() when This :: wxControlWithItems(), Item :: unicode:chardata(), ClientData :: term().
將項目附加到控制項中。
傳回值:傳回值是新插入項目的索引。請注意,如果控制項已排序(例如,具有 wxLB_SORT
或 wxCB_SORT
樣式),則此值可能與最後一個索引不同。
-spec appendStrings(This, Items) -> integer() when This :: wxControlWithItems(), Items :: [unicode:chardata()].
一次將多個項目附加到控制項中。
請注意,如果您需要新增大量項目,呼叫此方法通常比逐一附加它們快得多。
-spec appendStrings(This, Items, ClientsData) -> integer() when This :: wxControlWithItems(), Items :: [unicode:chardata()], ClientsData :: [term()].
一次將多個項目附加到控制項中。
請注意,如果您需要新增大量項目,呼叫此方法通常比逐一附加它們快得多。
-spec clear(This) -> ok when This :: wxControlWithItems().
從控制項中移除所有項目。
clear/1
也會刪除現有項目的客戶端資料(如果該資料由控制項擁有)。
-spec delete(This, N) -> ok when This :: wxControlWithItems(), N :: integer().
從控制項中刪除一個項目。
如果客戶端資料由控制項擁有,則與項目關聯的客戶端資料也會被刪除。 請注意,刪除索引為負數或大於或等於控制項中項目數的項目是錯誤的(在除錯組建中由斷言失敗表示)。
如果目前選取的項目在要刪除的項目下方,即如果 getSelection/1
傳回大於或等於 n
的有效索引,則當呼叫此函式時,選取項目將會失效。但是,如果選取的項目出現在要刪除的項目之前,則選取項目將會保持不變。
請參閱:clear/1
-spec findString(This, String) -> integer() when This :: wxControlWithItems(), String :: unicode:chardata().
-spec findString(This, String, [Option]) -> integer() when This :: wxControlWithItems(), String :: unicode:chardata(), Option :: {bCase, boolean()}.
尋找標籤與給定字串相符的項目。
傳回值:項目的從零開始的位置,如果找不到字串,則傳回 wxNOT_FOUND。
-spec getClientData(This, N) -> term() when This :: wxControlWithItems(), N :: integer().
傳回與給定項目關聯的客戶端資料指標(如果有的話)。
對於根本沒有型別客戶端資料的控制項呼叫此函式是錯誤的,儘管即使給定項目沒有與之關聯的任何客戶端資料(但其他項目有)呼叫它也是可以的。
請注意,傳回的指標仍然由控制項擁有,並將由其刪除,如果您想從控制項中移除指標,請使用 DetachClientObject()
(在 wx 中未實作)。
傳回值:客戶端資料的指標,如果不存在則傳回 NULL。
-spec getCount(This) -> integer() when This :: wxControlWithItems().
傳回控制項中的項目數量。
請參閱:isEmpty/1
-spec getSelection(This) -> integer() when This :: wxControlWithItems().
傳回所選項目的索引,如果沒有選取任何項目,則傳回 wxNOT\_FOUND
。
傳回值:目前選取項目的位置。
注意:此方法只能用於單選清單方塊,對於具有 wxLB_MULTIPLE 樣式的清單方塊,您應該使用 wxListBox:getSelections/1
。
請參閱
-spec getString(This, N) -> unicode:charlist() when This :: wxControlWithItems(), N :: integer().
傳回具有給定索引的項目的標籤。
傳回值:項目的標籤,如果位置無效則傳回空字串。
-spec getStringSelection(This) -> unicode:charlist() when This :: wxControlWithItems().
傳回所選項目的標籤,如果沒有選取任何項目,則傳回空字串。
請參閱:getSelection/1
-spec insert(This, Item, Pos) -> integer() when This :: wxControlWithItems(), Item :: unicode:chardata(), Pos :: integer().
將項目插入到控制項中。
傳回值:傳回值是新插入項目的索引。 如果由於某種原因插入失敗,則傳回 -1。
-spec insert(This, Item, Pos, ClientData) -> integer() when This :: wxControlWithItems(), Item :: unicode:chardata(), Pos :: integer(), ClientData :: term().
將項目插入到控制項中。
傳回值:傳回值是新插入項目的索引。 如果由於某種原因插入失敗,則傳回 -1。
-spec insertStrings(This, Items, Pos) -> integer() when This :: wxControlWithItems(), Items :: [unicode:chardata()], Pos :: integer().
一次將多個項目插入到控制項中。
請注意,如果您需要插入大量項目,呼叫此方法通常比逐一插入它們快得多。
傳回值:傳回值是最後插入的項目的索引。 如果由於某種原因插入失敗,則傳回 -1。
-spec insertStrings(This, Items, Pos, ClientsData) -> integer() when This :: wxControlWithItems(), Items :: [unicode:chardata()], Pos :: integer(), ClientsData :: [term()].
一次將多個項目插入到控制項中。
請注意,如果您需要插入大量項目,呼叫此方法通常比逐一插入它們快得多。
傳回值:傳回值是最後插入的項目的索引。 如果由於某種原因插入失敗,則傳回 -1。
-spec isEmpty(This) -> boolean() when This :: wxControlWithItems().
如果控制項為空,則傳回 true,如果控制項有一些項目,則傳回 false。
請參閱:getCount/1
-spec select(This, N) -> ok when This :: wxControlWithItems(), N :: integer().
這與 setSelection/2
相同,存在的原因僅是因為對於支援多重選取的控制項而言,它稍微更自然一些。
-spec setClientData(This, N, Data) -> ok when This :: wxControlWithItems(), N :: integer(), Data :: term().
將給定的已型別的客戶端資料指標與給定項目關聯:當項目被刪除時(無論是透過使用 delete/2
明確刪除,還是當控制項本身被銷毀時隱含刪除),data
物件將被刪除。
請注意,如果先前有任何未型別的客戶端資料指標與控制項項目關聯,則呼叫此函式是錯誤的。
-spec setSelection(This, N) -> ok when This :: wxControlWithItems(), N :: integer().
將選取項目設定為給定的項目 n
,如果 n
== wxNOT\_FOUND
,則完全移除選取項目。
請注意,這不會導致發出任何命令事件,也不會取消選取支援多重選取的控制項中的任何其他項目。
請參閱
-spec setString(This, N, String) -> ok when This :: wxControlWithItems(), N :: integer(), String :: unicode:chardata().
設定給定項目的標籤。
-spec setStringSelection(This, String) -> boolean() when This :: wxControlWithItems(), String :: unicode:chardata().
在控制項中選取具有指定字串的項目。
此方法不會導致發出任何命令事件。
請注意,此方法不區分大小寫,即字串會與控制項的所有元素進行不區分大小寫的比較,並且會選取第一個符合的項目,即使它的大小寫與此字串不完全相同,並且之後有完全相符的項目。
傳回值:如果已選取指定的字串,則傳回 true,如果在控制項中找不到該字串,則傳回 false。