# wxComboBox

###
Module

wxComboBox

###
Module Summary

Functions for wxComboBox class

###
Description

A combobox is like a combination of an edit control and a listbox.

It can be displayed as static list with editable or read-only text field; or a drop-down list with text field; or a drop-down list without a text field depending on the platform and presence of wxCB_READONLY style.

A combobox permits a single selection only. Combobox items are numbered from zero.

If you need a customized combobox, have a look at wxComboCtrl (not implemented in wx), wxOwnerDrawnComboBox (not implemented in wx), wxComboPopup (not implemented in wx) and the ready-to-use wxBitmapComboBox (not implemented in wx).

Please refer to wxTextEntry (not implemented in wx) documentation for the description of methods operating with the text entry part of the combobox and to wxItemContainer (not implemented in wx) for the methods operating with the list of strings. Notice that at least under MSW wxComboBox doesn't behave correctly if it contains strings differing in case only so portable programs should avoid adding such strings to this control.

Styles

This class supports the following styles:

See: wxListBox, wxTextCtrl, wxChoice, wxCommandEvent

This class is derived (and can use functions) from: wxControlWithItems wxControl wxWindow wxEvtHandler

wxWidgets docs: wxComboBox

###
Events

Event types emitted from this class: command_combobox_selected, command_text_updated, command_text_enter, combobox_dropdown, combobox_closeup

###
Data Types

####
wxComboBox() = wx:wx_object()

###
Exports

####
new() -> wxComboBox()

Default constructor.

####
new(Parent, Id) -> wxComboBox()

### Types

Parent = wxWindow:wxWindow()
Id = integer()

####
new(Parent, Id, Options :: [Option]) -> wxComboBox()

### Types

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

Constructor, creating and showing a combobox.

See: create/8, wxValidator (not implemented in wx)

####
destroy(This :: wxComboBox()) -> ok

Destructor, destroying the combobox.

####
create(This, Parent, Id, Value, Pos, Size, Choices) -> boolean()

### Types

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,
Options :: [Option]) ->
boolean()

### Types

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

####
canCopy(This) -> boolean()

### Types

This = wxComboBox()

Returns true if the selection can be copied to the clipboard.

####
canCut(This) -> boolean()

### Types

This = wxComboBox()

Returns true if the selection can be cut to the clipboard.

####
canPaste(This) -> boolean()

### Types

This = wxComboBox()

Returns true if the contents of the clipboard can be pasted into the text control.

On some platforms (Motif, GTK) this is an approximation and returns true if the control is editable, false otherwise.

####
canRedo(This) -> boolean()

### Types

This = wxComboBox()

Returns true if there is a redo facility available and the last operation can be redone.

####
canUndo(This) -> boolean()

### Types

This = wxComboBox()

Returns true if there is an undo facility available and the last operation can be undone.

####
copy(This) -> ok

### Types

This = wxComboBox()

Copies the selected text to the clipboard.

####
cut(This) -> ok

### Types

This = wxComboBox()

Copies the selected text to the clipboard and removes it from the control.

####
getInsertionPoint(This) -> integer()

### Types

This = wxComboBox()

Same as wxTextCtrl:getInsertionPoint/1.

Note: Under wxMSW, this function always returns 0 if the combobox doesn't have the focus.

####
getLastPosition(This) -> integer()

### Types

This = wxComboBox()

Returns the zero based index of the last position in the text control, which is equal to the number of characters in the control.

####
getValue(This) -> unicode:charlist()

### Types

This = wxComboBox()

Gets the contents of the control.

Notice that for a multiline text control, the lines will be separated by (Unix-style) \n characters, even under Windows where they are separated by a \r\n sequence in the native control.

####
paste(This) -> ok

### Types

This = wxComboBox()

Pastes text from the clipboard to the text item.

####
redo(This) -> ok

### Types

This = wxComboBox()

If there is a redo facility and the last operation can be redone, redoes the last operation.

Does nothing if there is no redo facility.

####
replace(This, From, To, Value) -> ok

### Types

This = wxComboBox()
From = To = integer()
Value = unicode:chardata()

Replaces the text starting at the first position up to (but not including) the character at the last position with the given text.

This function puts the current insertion point position at to as a side effect.

####
remove(This, From, To) -> ok

### Types

This = wxComboBox()
From = To = integer()

Removes the text starting at the first given position up to (but not including) the character at the last position.

This function puts the current insertion point position at to as a side effect.

####
setInsertionPoint(This, Pos) -> ok

### Types

This = wxComboBox()
Pos = integer()

Sets the insertion point at the given position.

####
setInsertionPointEnd(This) -> ok

### Types

This = wxComboBox()

Sets the insertion point at the end of the text control.

This is equivalent to calling setInsertionPoint/2 with getLastPosition/1 argument.

####
setSelection(This, N) -> ok

### Types

This = wxComboBox()
N = integer()

Sets the selection to the given item n or removes the selection entirely if n == wxNOT_FOUND.

Note that this does not cause any command events to be emitted nor does it deselect any other items in the controls which support multiple selections.

See: wxControlWithItems:setString/3, wxControlWithItems:setStringSelection/2

####
setSelection(This, From, To) -> ok

### Types

This = wxComboBox()
From = To = integer()

Same as wxTextCtrl:setSelection/3.

####
setValue(This, Text) -> ok

### Types

This = wxComboBox()
Text = unicode:chardata()

Sets the text for the combobox text field.

For normal, editable comboboxes with a text entry field calling this method will generate a wxEVT_TEXT event, consistently with wxTextCtrl:setValue/2 behaviour, use wxTextCtrl:changeValue/2 if this is undesirable.

For controls with wxCB_READONLY style the method behaves somewhat differently: the string must be in the combobox choices list (the check for this is case-insensitive) and wxEVT_TEXT is not generated in this case.

####
undo(This) -> ok

### Types

This = wxComboBox()

If there is an undo facility and the last operation can be undone, undoes the last operation.

Does nothing if there is no undo facility.