\section{\class{wxChoice}}\label{wxchoice}

A choice item is used to select one of a list of strings. Unlike a
listbox, only the selection is visible until the user pulls down the
menu of choices.

\wxheading{Derived from}

\helpref{wxControl}{wxcontrol}\\
\helpref{wxWindow}{wxwindow}\\
\helpref{wxEvtHandler}{wxevthandler}\\
\helpref{wxObject}{wxobject}

\wxheading{Include files}

<wx/choice.h>

\wxheading{Window styles}

There are no special styles for wxChoice.

See also \helpref{window styles overview}{windowstyles}.

\wxheading{Event handling}

\twocolwidtha{7cm}
\begin{twocollist}\itemsep=0pt
\twocolitem{{\bf EVT\_CHOICE(id, func)}}{Process a wxEVT\_COMMAND\_CHOICE\_SELECTED event,
when an item on the list is selected.}
\end{twocollist}

\wxheading{See also}

\helpref{wxListBox}{wxlistbox}, \helpref{wxComboBox}{wxcombobox},
\rtfsp\helpref{wxCommandEvent}{wxcommandevent}

\latexignore{\rtfignore{\wxheading{Members}}}

\membersection{wxChoice::wxChoice}\label{wxchoiceconstr}

\func{}{wxChoice}{\void}

Default constructor.

\func{}{wxChoice}{\param{wxWindow *}{parent}, \param{wxWindowID}{ id},\rtfsp
\param{const wxPoint\& }{pos}, \param{const wxSize\&}{ size},\rtfsp
\param{int}{ n}, \param{const wxString }{choices[]},\rtfsp
\param{long}{ style = 0}, \param{const wxValidator\& }{validator = wxDefaultValidator}, \param{const wxString\& }{name = ``choice"}}

Constructor, creating and showing a choice.

\wxheading{Parameters}

\docparam{parent}{Parent window. Must not be NULL.}

\docparam{id}{Window identifier. A value of -1 indicates a default value.}

\docparam{pos}{Window position.}

\docparam{size}{Window size. If the default size (-1, -1) is specified then the choice is sized
appropriately.}

\docparam{n}{Number of strings with which to initialise the choice control.}

\docparam{choices}{An array of strings with which to initialise the choice control.}

\docparam{style}{Window style. See \helpref{wxChoice}{wxchoice}.}

\docparam{validator}{Window validator.}

\docparam{name}{Window name.}

\wxheading{See also}

\helpref{wxChoice::Create}{wxchoicecreate}, \helpref{wxValidator}{wxvalidator}

\pythonnote{The wxChoice constructor in wxPython reduces the {\tt n}
and {\tt choices} arguments are to a single argument, which is
a list of strings.}

\perlnote{In wxPerl there is just an array reference in place of {\tt n}
and {\tt choices}.}

\membersection{wxChoice::\destruct{wxChoice}}

\func{}{\destruct{wxChoice}}{\void}

Destructor, destroying the choice item.

\membersection{wxChoice::Append}\label{wxchoiceappend}

\func{void}{Append}{\param{const wxString\& }{ item}}

Adds the item to the end of the choice control.

\func{void}{Append}{\param{const wxString\& }{ item}, \param{void* }{clientData}}

Adds the item to the end of the combobox, associating the given data
with the item.

\wxheading{Parameters}

\docparam{item}{String to add.}

\docparam{clientData}{Client data to associate with the item.}

\membersection{wxChoice::Clear}\label{wxchoiceclear}

\func{void}{Clear}{\void}

Clears the strings from the choice item.

\membersection{wxChoice::Create}\label{wxchoicecreate}

\func{bool}{Create}{\param{wxWindow *}{parent}, \param{wxWindowID}{ id},\rtfsp
\param{const wxPoint\& }{pos}, \param{const wxSize\&}{ size},\rtfsp
\param{int}{ n}, \param{const wxString }{choices[]},\rtfsp
\param{long}{ style = 0}, \param{const wxString\& }{name = ``choice"}}

Creates the choice for two-step construction. See \helpref{wxChoice::wxChoice}{wxchoiceconstr}.

\membersection{wxChoice::Delete}\label{wxchoicedelete}

\func{void}{Delete}{\param{int }{n}}

Deletes the item with the given index from the control.

\wxheading{Parameters}

\docparam{n}{The item to delete.}

\membersection{wxChoice::FindString}\label{wxchoicefindstring}

\constfunc{int}{FindString}{\param{const wxString\& }{string}}

Finds a choice matching the given string.

\wxheading{Parameters}

\docparam{string}{String to find.}

\wxheading{Return value}

Returns the position if found, or -1 if not found.

\membersection{wxChoice::GetColumns}\label{wxchoicegetcolumns}

\constfunc{int}{GetColumns}{\void}

Gets the number of columns in this choice item.

\wxheading{Remarks}

This is implemented for Motif only.

\membersection{wxChoice::GetClientData}\label{wxchoicegetclientdata}

\constfunc{void*}{GetClientData}{\param{int}{ n}}

Returns a pointer to the client data associated with the given item (if any).

\wxheading{Parameters}

\docparam{n}{An item, starting from zero.}

\wxheading{Return value}

A pointer to the client data, or NULL if the item was not found.

\membersection{wxChoice::GetCount}\label{wxchoicegetcount}

\constfunc{int}{GetCount}{\void}

Returns the number of items in the choice.

\membersection{wxChoice::GetSelection}\label{wxchoicegetselection}

\constfunc{int}{GetSelection}{\void}

Gets the id (position) of the selected string, or -1 if there is no selection.

\membersection{wxChoice::GetString}\label{wxchoicegetstring}

\constfunc{wxString}{GetString}{\param{int}{ n}}

Returns the string at the given position.

\wxheading{Parameters}

\docparam{n}{The zero-based position.}

\wxheading{Return value}

The string at the given position, or the empty string if {\it n} is invalid.

\membersection{wxChoice::GetStringSelection}\label{wxchoicegetstringselection}

\constfunc{wxString}{GetStringSelection}{\void}

Gets the selected string, or the empty string if no string is selected.

\membersection{wxChoice::Number}\label{wxchoicenumber}

\constfunc{int}{Number}{\void}

{\bf Obsolescence note:} This method is obsolete and was replaced with 
\helpref{GetCount}{wxchoicegetcount}, please use the new method in the new
code. This method is only available if wxWidgets was compiled with 
{\tt WXWIN\_COMPATIBILITY\_2\_2} defined and will disappear completely in
future versions.

Returns the number of strings in the choice control.

\membersection{wxChoice::SetClientData}\label{wxchoicesetclientdata}

\func{void}{SetClientData}{\param{int}{ n}, \param{void* }{data}}

Associates the given client data pointer with the given item.

\wxheading{Parameters}

\docparam{n}{The zero-based item.}

\docparam{data}{The client data.}

\membersection{wxChoice::SetColumns}\label{wxchoicesetcolumns}

\func{void}{SetColumns}{\param{int}{ n = 1}}

Sets the number of columns in this choice item.

\wxheading{Parameters}

\docparam{n}{Number of columns.}

\wxheading{Remarks}

This is implemented for Motif only.

\membersection{wxChoice::SetSelection}\label{wxchoicesetselection}

\func{void}{SetSelection}{\param{int}{ n}}

Sets the choice by passing the desired string position. This does not cause
a wxEVT\_COMMAND\_CHOICE\_SELECTED event to get emitted.

\wxheading{Parameters}

\docparam{n}{The string position to select, starting from zero.}

\wxheading{See also}

\membersection{wxChoice::SetString}\label{wxchoicesetstring}

\func{void}{SetString}{\param{int }{n}, \param{const wxString\& }{text}}

Replaces the specified string in the control with another one.

\wxheading{Parameters}

\docparam{n}{The zero-based index of the string to replace}

\docparam{text}{The new value for this item}

{\bf NB:} This method is currently not implemented in wxGTK.

\helpref{wxChoice::SetStringSelection}{wxchoicesetstringselection}

\membersection{wxChoice::SetStringSelection}\label{wxchoicesetstringselection}

\func{void}{SetStringSelection}{\param{const wxString\& }{ string}}

Sets the choice by passing the desired string. This does not cause
a wxEVT\_COMMAND\_CHOICE\_SELECTED event to get emitted.

\wxheading{Parameters}

\docparam{string}{The string to select.}

\wxheading{See also}

\helpref{wxChoice::SetSelection}{wxchoicesetselection}


