Clase wxItemContainer
Esta clase es una clase base abstracta para algunos controles wxWidgets que contienen varios elementos como wxListBox, wxCheckListBox, wxComboBox o wxChoice.
Jerarquía:

Define una interfaz que es implementada por todos los controles que tienen subelementos de cadena, cada uno de los cuales puede ser seleccionado.
wxItemContainer extiende la interfaz wxItemContainerImmutable con métodos para añadir/eliminar elementos.
Define los métodos para acceder a los elementos del control y, aunque cada una de las clases derivadas los implementa de forma diferente, todos se ajustan a la misma interfaz.
Los elementos de un wxItemContainer tienen etiquetas de cadena (no vacías) y, opcionalmente, datos de cliente asociados a ellos. Los datos de cliente pueden ser de dos tipos diferentes: simples punteros no tipados (void *) que son simplemente almacenados por el control pero no utilizados de ninguna manera por él, o punteros tipados (wxClientData*) que son propiedad del control, lo que significa que los datos de cliente tipados (y sólo ellos) serán eliminados cuando se elimine un elemento utilizando Delete() o se borre todo el control utilizando Clear(), lo que también ocurre cuando se destruye.
Por último, hay que tener en cuenta que en el mismo control todos los elementos deben tener datos de cliente del mismo tipo (tipados o no tipados), si los hay. Este tipo viene determinado por la primera llamada a Append() (la versión con puntero de datos de cliente) o SetClientData().
Hay que tener en cuenta que esto no es un control, es una interfaz mixin de la que las clases tienen que derivar además de wxControl o wxWindow. La clase wxControlWithItems se proporciona para este propósito.
Funciones miembro
Append()
int wxItemContainer::Append(const std::vector< wxString > & items)
Añade varios elementos a la vez en el control.
Es lo mismo que la sobrecarga que toma wxArrayString, excepto que funciona con el contenedor vectorial estándar.
Append()
int wxItemContainer::Append(const wxArrayString & items)
Añade varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
Append()
int wxItemContainer::Append( const wxArrayString & items, void ** clientData )
Añade varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
- clientData
- Matriz de punteros a datos de cliente del mismo tamaño que los ítems para asociar con los nuevos ítems.
Append()
int wxItemContainer::Append( const wxArrayString & items, wxClientData ** clientData )
Añade varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
- clientData
- Matriz de punteros a datos de cliente del mismo tamaño que los ítems para asociar con los nuevos ítems.
Append()
int wxItemContainer::Append(const wxString & item)
Añade un elemento al control.
Parámetros
- item
- Cadena a añadir.
Valor de retorno
El valor devuelto es el índice del nuevo elemento insertado. Hay que tener en cuenta que puede ser diferente del último si el control está ordenado (por ejemplo, tiene el estilo wxLB_SORT o wxCB_SORT).
Append()
int wxItemContainer::Append( const wxString & item, void * clientData )
Añade un elemento al control.
Parámetros
- item
- Cadena a añadir.
- clientData
- Puntero a los datos del cliente a asociar con el nuevo elemento.
Valor de retorno
El valor devuelto es el índice del nuevo elemento insertado. Hay que tener en cuenta que puede ser diferente del último si el control está ordenado (por ejemplo, tiene el estilo wxLB_SORT o wxCB_SORT).
Append()
int wxItemContainer::Append( const wxString & item, wxClientData * clientData )
Append()
int wxItemContainer::Append( unsigned int n, const wxString * items )
Añade varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
Append()
int wxItemContainer::Append( unsigned int n, const wxString * items, void ** clientData )
Añade varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
- clientData
- Matriz de punteros de datos de cliente de tamaño n para asociar con los nuevos elementos.
Append()
int wxItemContainer::Append( unsigned int n, const wxString * items, wxClientData ** clientData )
Añade varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
- clientData
- Matriz de punteros de datos de cliente de tamaño n para asociar con los nuevos elementos.
Clear()
void wxItemContainer::Clear()
Elimina todos los elementos del control.
Clear() también borra los datos de cliente de los elementos existentes si son propiedad del control.
Delete()
void wxItemContainer::Delete(unsigned int n)
Elimina un elemento del control.
Los datos del cliente asociados al elemento también se eliminarán si son propiedad del control. Hay que tener en cuenta que es un error (señalado por un fallo de assert en las construcciones de depuración) eliminar un elemento con el índice negativo o mayor o igual que el número de elementos en el control.
Si hay un elemento seleccionado actualmente por debajo del elemento que se está eliminando, es decir, si GetSelection() devuelve un índice válido mayor o igual que n, la selección se invalida cuando se llama a esta función. Sin embargo, si el elemento seleccionado aparece antes que el elemento que se está eliminando, la selección se mantiene sin cambios.
Parámetros
- n
- El índice del elemento basado en cero.
DetachClientObject()
wxClientData* wxItemContainer::DetachClientObject(unsigned int n)
Devuelve el objeto cliente asociado al elemento dado y transfiere su propiedad a quien lo llama.
Este método, a diferencia de GetClientObject(), espera que el llamante elimine el puntero devuelto. También reemplaza el puntero almacenado internamente por NULL, es decir, separa completamente el puntero del objeto cliente del control.
Es un error llamar a este método a menos que HasClientObjectData() devuelva true.
Parámetros
- n
- El índice del objeto basado en cero.
Valor de retorno
El puntero del objeto cliente asociado que será eliminado por el llamante o NULL.
GetClientData()
void* wxItemContainer::GetClientData(unsigned int n) const
Devuelve un puntero a los datos de cliente asociados al elemento dado (si los hay).
Es un error llamar a esta función para un control que no tiene datos de cliente no tipados, aunque está bien llamarla incluso si el elemento dado no tiene ningún dato de cliente asociado (pero otros elementos sí).
Parámetros
- n
- La posición basada en cero del elemento.
Valor de retorno
Un puntero a los datos del cliente, o NULL si no están presentes.
GetClientObject()
wxClientData* wxItemContainer::GetClientObject(unsigned int n) const
Devuelve un puntero a los datos de cliente asociados al elemento dado (si los hay).
Es un error llamar a esta función para un control que no tiene datos de cliente escritos, aunque está bien llamarla incluso si el elemento dado no tiene ningún dato de cliente asociado (pero otros elementos sí).
Hay que tener en cuenta que el puntero devuelto sigue siendo propiedad del control y será eliminado por éste, utilizar DetachClientObject() si desea eliminar el puntero del control.
Parámetros
- n
- La posición basada en cero del elemento.
Valor de retorno
Un puntero a los datos del cliente, o NULL si no están presentes.
HasClientData()
bool wxItemContainer::HasClientData() const
Devuelve true, si hay datos no tipados (void*) o datos de objeto (wxClientData*) asociados a los elementos del control.
HasClientObjectData()
bool wxItemContainer::HasClientObjectData() const
Devuelve true, si los datos de objeto están asociados a los elementos del control.
Los punteros a datos de objeto tienen el tipo wxClientData* en lugar de void* y, lo que es más importante, son propiedad del control, es decir, serán eliminados por él, a diferencia de sus homólogos no tipados.
HasClientUntypedData()
bool wxItemContainer::HasClientUntypedData() const
Devuelve true, si los datos no tipados (void*) están asociados a los elementos del control.
Insert()
int wxItemContainer::Insert(const std::vector< wxString > & items)
Inserta varios elementos a la vez en el control.
Es lo mismo que la sobrecarga que toma wxArrayString, excepto que funciona con el contenedor vectorial estándar.
Insert()
int wxItemContainer::Insert( const wxArrayString & items, unsigned int pos )
Inserta varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que insertarlos uno a uno si necesita insertar muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
- pos
- Posición antes de la que se insertan los elementos, basada en cero.
Valor de retorno
El valor devuelto es el índice del último elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Insert()
int wxItemContainer::Insert( const wxArrayString & items, unsigned int pos, void ** clientData )
Inserta varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que insertarlos uno a uno si necesita insertar muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
- pos
- Posición antes de la que se insertan los elementos, basada en cero.
- clientData
- Matriz de punteros a datos de cliente del mismo tamaño que los ítems para asociar con los nuevos ítems.
Valor de retorno
El valor devuelto es el índice del último elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Insert()
int wxItemContainer::Insert( const wxArrayString & items, unsigned int pos, wxClientData ** clientData )
Inserta varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que insertarlos uno a uno si necesita insertar muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
- pos
- Posición antes de la que se insertan los elementos, basada en cero.
- clientData
- Matriz de punteros a datos de cliente del mismo tamaño que los ítems para asociar con los nuevos ítems.
Valor de retorno
El valor devuelto es el índice del último elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Insert()
int wxItemContainer::Insert( const wxString & item, unsigned int pos )
Inserta un elemento en el control.
Parámetros
- item
- Cadena a añadir.
- pos
- Posición antes de la cual insertar el ítem, basada en cero.
Valor de retorno
El valor devuelto es el índice del nuevo elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Insert()
int wxItemContainer::Insert( const wxString & item, unsigned int pos, void * clientData )
Inserta un elemento en el control.
Parámetros
- item
- Cadena a añadir.
- pos
- Posición antes de la cual insertar el ítem, basada en cero.
- clientData
- Puntero a los datos del cliente a asociar con el nuevo elemento.
Valor de retorno
El valor devuelto es el índice del nuevo elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Insert()
int wxItemContainer::Insert( const wxString & item, unsigned int pos, wxClientData * clientData )
Inserta un elemento en el control.
Parámetros
- item
- Cadena a añadir.
- pos
- Posición antes de la cual insertar el ítem, basada en cero.
- clientData
- Puntero a los datos del cliente a asociar con el nuevo elemento.
Valor de retorno
El valor devuelto es el índice del nuevo elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Insert()
int wxItemContainer::Insert( unsigned int n, const wxString * items, unsigned int pos )
Inserta varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que insertarlos uno a uno si necesita insertar muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
- pos
- Posición para insertar los ítems antes, basada en cero.
Valor de retorno
El valor devuelto es el índice del último elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Insert()
int wxItemContainer::Insert( unsigned int n, const wxString * items, unsigned int pos, void ** clientData )
Inserta varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que insertarlos uno a uno si necesita insertar muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
- pos
- Posición antes de la cual insertar los nuevos elementos, basada en cero.
- clientData
- Matriz de punteros a datos de cliente de tamaño n para asociar con los nuevos elementos.
Valor de retorno
El valor devuelto es el índice del último elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Insert()
int wxItemContainer::Insert( unsigned int n, const wxString * items, unsigned int pos, wxClientData ** clientData )
Inserta varios elementos a la vez en el control.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que insertarlos uno a uno si necesita insertar muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
- pos
- Posición antes de la cual insertar los nuevos elementos, basada en cero.
- clientData
- Matriz de punteros a datos de cliente de tamaño n para asociar con los nuevos elementos.
Valor de retorno
El valor devuelto es el índice del último elemento insertado. Si la inserción falló por alguna razón, se devuelve -1.
Set()
void wxItemContainer::Set(const std::vector< wxString > & items)
Sustituye el contenido actual del control por los elementos dados.
Es lo mismo que la sobrecarga que toma wxArrayString, excepto que funciona con el contenedor vectorial estándar.
Set()
void wxItemContainer::Set(const wxArrayString & items)
Sustituye el contenido actual del control por los elementos dados.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
Set()
void wxItemContainer::Set( const wxArrayString & items, void ** clientData )
Sustituye el contenido actual del control por los elementos dados.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
- clientData
- Matriz de punteros a datos de cliente del mismo tamaño que los ítems para asociar con los nuevos ítems.
Set()
void wxItemContainer::Set( const wxArrayString & items, wxClientData ** clientData )
Sustituye el contenido actual del control por los elementos dados.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- items
- Matriz de cadenas a insertar.
- clientData
- Matriz de punteros a datos de cliente del mismo tamaño que los ítems para asociar con los nuevos ítems.
Set()
void wxItemContainer::Set( unsigned int n, const wxString * items )
Sustituye el contenido actual del control por los elementos dados.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
Set()
void wxItemContainer::Set( unsigned int n, const wxString * items, void ** clientData )
Sustituye el contenido actual del control por los elementos dados.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
- clientData
- Matriz de punteros a datos de cliente de tamaño n para asociar con los nuevos elementos.
Set()
void wxItemContainer::Set( unsigned int n, const wxString * items, wxClientData ** clientData )
Sustituye el contenido actual del control por los elementos dados.
Hay que tener en cuenta que llamar a este método suele ser mucho más rápido que añadirlos uno a uno si necesita añadir muchos elementos.
Parámetros
- n
- Número de elementos en el array items.
- items
- Matriz de cadenas de tamaño n.
- clientData
- Matriz de punteros a datos de cliente de tamaño n para asociar con los nuevos elementos.
SetClientData()
void wxItemContainer::SetClientData( unsigned int n, void * data )
Asocia el puntero de datos de cliente no tipado dado con el elemento dado.
Hay que tener en cuenta que es un error llamar a esta función si antes se había asociado algún puntero de datos de cliente tipado con los elementos de control.
Parámetros
- n
- El índice del elemento basado en cero.
- data
- Los datos del cliente a asociar con el elemento.
SetClientObject()
void wxItemContainer::SetClientObject( unsigned int n, wxClientData * data )
Asocia el puntero de datos de cliente tipado dado con el elemento dado: el objeto de datos se eliminará cuando se elimine el elemento (ya sea explícitamente utilizando Delete() o implícitamente cuando se destruya el propio control).
Hay que tener en cuenta que es un error llamar a esta función si algún puntero de datos de cliente no tipado ha sido asociado antes con los elementos del control.
Parámetros
- n
- El índice del elemento basado en cero.
- data
- Los datos del cliente a asociar con el elemento.
Métodos y datos heredados
Esta clase hereda los métodos y datos miembro públicos y protegidos de wxItemContainerImmutable.