combobox.h

Clase wxComboBox

Un combobox es como una combinación de un control de edición y un listbox.

Jerarquía:

Jerarquía de la clase wxComboBox

Puede mostrarse como una lista estática con campo de texto editable o de solo lectura; o como una lista desplegable con campo de texto; o como una lista desplegable sin campo de texto dependiendo de la plataforma y de la presencia del estilo wxCB_READONLY.

Un combobox solo permite una única selección. Los elementos del combobox se numeran a partir de cero.

Si se necesita un combobox personalizado, echar un vistazo a wxComboCtrl, wxOwnerDrawnComboBox, wxComboPopup y el wxBitmapComboBox listo para usar.

Consultar la documentación de wxTextEntry para la descripción de los métodos que operan con la parte de entrada de texto del combobox y wxItemContainer para los métodos que operan con la lista de cadenas. Hay que tener en cuenta que al menos bajo MSW wxComboBox no se comporta correctamente si contiene cadenas que difieren sólo en mayúsculas, por lo que los programas portables deberían evitar añadir tales cadenas a este control.

Estilos

Esta clase admite los siguientes estilos:

wxCB_SIMPLE
Crea un combobox con una lista mostrada permanentemente. Solo para Windows.
wxCB_DROPDOWN
Crea un combobox con una lista desplegable. Solo MSW y Motif.
wxCB_READONLY
Un combobox con este estilo se comporta como un wxChoice (y puede tener el mismo aspecto también, aunque esto depende de la plataforma), es decir, permite al usuario elegir de la lista de opciones pero no permite introducir un valor que no esté presente en la lista.
wxCB_SORT
Ordena alfabéticamente las entradas de la lista.
wxTE_PROCESS_ENTER
El control generará el evento wxEVT_TEXT_ENTER que puede ser manejado por el programa. En caso contrario, es decir, si este estilo no se especifica en absoluto, o se utiliza, pero no hay manejador de eventos para este evento o el manejador de eventos llama a wxEvent::Skip() para evitar anular el manejo por defecto, la pulsación de la tecla Intro es procesada internamente por el control o utilizada para activar el botón por defecto del diálogo, si existe.

Eventos emitidos por esta clase

Las siguientes macros de manejadores de eventos redirigen los eventos a manejadores de funciones miembro 'func' con prototipos como:

void handlerFuncName(wxCommandEvent& event)

Macros de eventos para eventos emitidos por esta clase:

EVT_COMBOBOX(id, func)
Procesa un evento wxEVT_COMBOBOX, cuando se selecciona un elemento de la lista. Nótese que al llamar a GetValue() se devuelve el nuevo valor de la selección.
EVT_TEXT(id, func)
Procesa un evento wxEVT_TEXT, cuando cambia el texto del combobox.
EVT_TEXT_ENTER(id, func)
Procesa un evento wxEVT_TEXT_ENTER, cuando se pulsa RETURN en el combobox (ten en cuenta que el combobox debe haber sido creado con el estilo wxTE_PROCESS_ENTER para recibir este evento).
EVT_COMBOBOX_DROPDOWN(id, func)
Procesa un evento wxEVT_COMBOBOX_DROPDOWN, que se genera cuando la parte de cuadro de lista del cuadro combinado se muestra (cae). Ten en cuenta que este evento sólo está soportado por wxMSW, wxGTK con GTK+ 2.10 o posterior, y wxOSX/Cocoa.
EVT_COMBOBOX_CLOSEUP(id, func)
Procesa un evento wxEVT_COMBOBOX_CLOSEUP, que se genera cuando el cuadro de lista del cuadro combinado desaparece (se cierra). Este evento solo se genera para las mismas plataformas que wxEVT_COMBOBOX_DROPDOWN anteriormente.

Funciones miembro

wxComboBox()

wxComboBox::wxComboBox()

Constructor por defecto.

wxComboBox()

wxComboBox::wxComboBox( wxWindow * parent, wxWindowID id, const wxString & value = wxEmptyString, const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, int n = 0, const wxString choices[] = NULL, long style = 0, const wxValidator & validator = wxDefaultValidator, const wxString & name = wxComboBoxNameStr )

Constructor, crea y muestra un combobox.

Parámetros
parent
Ventana padre. No debe ser NULL.
id
Identificador de la ventana. El valor wxID_ANY indica un valor por defecto.
value
Cadena de selección inicial. Una cadena vacía indica que no hay selección. Nótese que para los controles con estilo wxCB_READONLY esta cadena debe ser una de las opciones válidas si no está vacía.
pos
Posición de la ventana. Si se especifica wxDefaultPosition se elige una posición por defecto.
size
Tamaño de la ventana. Si se especifica wxDefaultSize entonces la ventana tiene el tamaño adecuado.
n
Número de cadenas con las que se inicializa el control.
choices
Un array de cadenas con las que inicializar el control.
style
Estilo de la ventana.
validator
Validador de la ventana.
name
Nombre de la ventana.

Nota: No soportado por wxPerl.

wxComboBox()

wxComboBox::wxComboBox( wxWindow * parent, wxWindowID id, const wxString & value, const wxPoint & pos, const wxSize & size, const wxArrayString & choices, long style = 0, const wxValidator & validator = wxDefaultValidator, const wxString & name = wxComboBoxNameStr )

Constructor, crea y muestra un combobox.

Parámetros
Ventana padre. No debe ser NULL.
id
Identificador de la ventana. El valor wxID_ANY indica un valor por defecto.
value
Cadena de selección inicial. Una cadena vacía indica que no hay selección.
pos
Posición de la ventana.
size
Tamaño de la ventana. Si se especifica wxDefaultSize, el tamaño de la ventana es el adecuado.
choices
Un array de cadenas con las que inicializar el control.
style
Estilo de la ventana.
validator
Validador de la ventana.
name
Nombre de la ventana.

Nota: Utilizar una referencia de array para el parámetro choices.

~wxComboBox()

virtual wxComboBox::~wxComboBox()

Destructor, destruye el combobox.

Create()

bool wxComboBox::Create( wxWindow * parent, wxWindowID id, const wxString & value, const wxPoint & pos, const wxSize & size, const wxArrayString & choices, long style = 0, const wxValidator & validator = wxDefaultValidator, const wxString & name = wxComboBoxNameStr )

Crea el combobox para la construcción en dos pasos.

Las clases derivadas deben llamar o reemplazar esta función.

Create()

bool wxComboBox::Create( wxWindow * parent, wxWindowID id, const wxString & value = wxEmptyString, const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, int n = 0, const wxString choices[] = NULL, long style = 0, const wxValidator & validator = wxDefaultValidator, const wxString & name = wxComboBoxNameStr )

Crea el combobox para la construcción en dos pasos.

Las clases derivadas deben llamar o reemplazar esta función.

Dismiss()

virtual void wxComboBox::Dismiss()

Oculta la parte del cuadro de lista del cuadro combinado.

Actualmente este método está implementado en wxMSW, wxGTK y wxOSX/Cocoa.

Hay que tener en cuenta que al llamar a esta función se generará un evento wxEVT_COMBOBOX_CLOSEUP excepto en wxOSX donde la generación de este evento no está soportada en absoluto.

FindString()

virtual int wxComboBox::FindString( const wxString & string, bool caseSensitive = false ) const

Busca un elemento cuya etiqueta coincida con la cadena dada.

Parámetros
string
Cadena a buscar.
caseSensitive
Si la búsqueda distingue entre mayúsculas y minúsculas (por defecto no).
Valor de retorno

La posición basada en cero del elemento, o wxNOT_FOUND si no se encontró la cadena.

Reimplementado de wxItemContainerImmutable.

GetCount()

virtual unsigned int wxComboBox::GetCount() const

Devuelve el número de elementos del control.

Implementa wxItemContainerImmutable.

GetCurrentSelection()

virtual int wxComboBox::GetCurrentSelection() const

Devuelve el elemento seleccionado en este momento.

Esta función hace lo mismo que wxChoice::GetCurrentSelection() y devuelve el elemento actualmente seleccionado en la lista desplegable si está abierta o lo mismo que wxControlWithItems::GetSelection() en caso contrario.

GetInsertionPoint()

virtual long wxComboBox::GetInsertionPoint() const

Igual que wxTextEntry::GetInsertionPoint().

Nota: Bajo wxMSW, esta función siempre devuelve 0 si el combobox no tiene el foco.

Reimplementado de wxTextEntry.

GetSelection()

virtual int wxComboBox::GetSelection() const

Devuelve el índice del elemento seleccionado o wxNOT_FOUND si no hay ningún elemento seleccionado.

Valor de retorno

La posición de la selección actual.

GetSelection()

virtual void wxComboBox::GetSelection( long * from, long * to ) const

Obtiene el intervalo de selección actual.

Si los valores devueltos son iguales, no hubo selección. Hay que tener en cuenta que los índices devueltos pueden ser utilizados con los otros métodos wxTextCtrl pero no representan necesariamente los índices correctos en la cadena devuelta por GetValue() para controles multilínea bajo Windows (al menos,) debe utilizar GetStringSelection() para obtener el texto seleccionado.

Parámetros
from
La primera posición devuelta.
to
La última posición devuelta.

Nota: En wxPerl este método no toma parámetros y devuelve una lista de 2 elementos (from, to).

Reimplementado de wxTextEntry.

GetString()

virtual wxString wxComboBox::GetString(unsigned int n) const

Devuelve la etiqueta del elemento con el índice dado.

El índice debe ser válido, es decir, menor que el valor devuelto por GetCount(), de lo contrario se lanza un assert. Esta función no puede invocarse si el control está vacío.

Parámetros
n
El índice basado en cero.
Valor de retorno

La etiqueta del elemento.

Implementa wxItemContainerImmutable.

GetStringSelection()

virtual wxString wxComboBox::GetStringSelection() const

Obtiene el texto seleccionado actualmente en el control.

Si no hay selección, la cadena devuelta está vacía.

Reimplementado de wxTextEntry.

IsEmpty()

bool wxComboBox::IsEmpty() const

IsEmpty() no está disponible en esta clase.

Este método se documenta aquí solo para advertir que no puede utilizarse con esta clase debido a la ambigüedad entre los métodos con el mismo nombre heredados de las clases base wxItemContainer y wxTextEntry.

Debido a esto, cualquier intento de llamarlo resulta en un error de compilación y se debería utilizar IsListEmpty() o IsTextEmpty() dependiendo de lo que quieras comprobar exactamente.

Reimplementado de wxTextEntry.

IsListEmpty()

bool wxComboBox::IsListEmpty() const

Devuelve true si la lista de opciones del combobox está vacía.

Utilizar este método en lugar de (no disponible en esta clase) IsEmpty() para comprobar si la lista de elementos está vacía.

IsTextEmpty()

bool wxComboBox::IsTextEmpty() const

Devuelve true si el texto del combobox está vacío.

Utilizar este método en lugar de (no disponible en esta clase) IsEmpty() para comprobar si el texto introducido actualmente en el combobox está vacío.

virtual void wxComboBox::Popup()

Muestra la parte del cuadro de lista del cuadro combinado.

Actualmente este método está implementado en wxMSW, wxGTK y wxOSX/Cocoa.

Hay que tener en cuenta que la llamada a esta función generará un evento wxEVT_COMBOBOX_DROPDOWN excepto en wxOSX donde la generación de este evento no está soportada en absoluto.

SetSelection()

virtual void wxComboBox::SetSelection(int n)

Establece la selección en el elemento n dado o elimina la selección por completo si n == wxNOT_FOUND.

Hay que tener en cuenta que esto no provoca la emisión de ningún evento de comando ni deselecciona ningún otro elemento de los controles que admiten selecciones múltiples.

Parámetros
n
La posición de la cadena a seleccionar, empezando por cero.
SetSelection()

virtual void wxComboBox::SetSelection( long from, long to )

SetString()

virtual void wxComboBox::SetString( unsigned int n, const wxString & text )

Cambia el texto del elemento del combobox especificado.

Hay que tener en cuenta que si el elemento es el seleccionado actualmente, es decir, si su texto se muestra en la parte de texto del combobox, entonces el texto también se sustituye por el nuevo texto.

Implementa wxItemContainerImmutable.

SetValue()

virtual void wxComboBox::SetValue(const wxString & text)

Establece el texto para el campo de texto del combobox.

Para comboboxes normales, editables con un campo de entrada de texto, llamar a este método generará un evento wxEVT_TEXT, consistente con el comportamiento de wxTextEntry::SetValue(), utilizar wxTextEntry::ChangeValue() si esto no es deseable.

Para controles con estilo wxCB_READONLY el método se comporta de forma algo diferente: la cadena debe estar en la lista de opciones del combobox (la comprobación de esto es insensible a mayúsculas y minúsculas) y wxEVT_TEXT no se genera en este caso.

Parámetros
text
El texto a establecer.

Reimplementado de wxTextEntry.

Métodos y datos heredados

Esta clase hereda los métodos y datos miembro públicos y protegidos de wxObject, wxEvtHandler, wxWindow, wxControl, wxTextEntry, wxItemContainer y wxItemContainerImmutable.