查看源代码 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().
返回所选项目的标签;如果没有选择任何项目,则返回空字符串。
-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。