addremovectrl.h

Clase wxAddRemoveCtrl

Una clase que añade botones para añadir y eliminar elementos a un control hijo tipo lista.

Jerarquía:

Jerarquía de la clase wxAddRemoveCtrl

Esta clase representa un control compuesto que combina cualquier control capaz de mostrar múltiples elementos, como wxListBox, wxListCtrl, wxTreeCtrl, wxDataViewCtrl o un control personalizado, con dos botones que permiten añadir y eliminar elementos de este control tipo lista. La ventaja de utilizar este control en lugar de crear y gestionar los botones directamente es que esta clase utiliza los botones y el diseño correctos para la plataforma actual. Por ejemplo, los botones se colocan debajo del control de lista en macOS y GTK+, pero a su derecha en MSW, y los propios botones utilizan mapas de bits específicos del sistema en macOS.

Esta clase se utiliza siempre junto con wxAddRemoveAdaptor, que se utiliza para añadir o eliminar elementos del control que los contiene cuando se pulsa el botón correspondiente. El ejemplo de diálogos muestra cómo hacerlo: primero hay que derivar una nueva clase de wxAddRemoveAdaptor e implementar sus métodos virtuales puros y luego hay que llamar a SetAdaptor() con un objeto recién asignado de esta clase. También se debe crear el control que contiene los elementos con wxAddRemoveCtrl como padre. Aquí están los diferentes pasos en pseudocódigo:

wxAddRemoveCtrl* ctrl = new wxAddRemoveCtrl(parent);
 
// Puede ser cualquier tipo de control para el que OnAdd() y OnRemove()
// se pueda hacer funcionar abajo.
wxListBox* lbox = new wxListBox(ctrl, ...);
 
class ListBoxAdaptor : public wxAddRemoveAdaptor
{
public:
    explicit ListBoxAdaptor(wxListBox* lbox) : m_lbox(lbox) { }
 
    virtual wxWindow* GetItemsCtrl() const { return m_lbox; }
 
    virtual bool CanAdd() const { return true; }
    virtual bool CanRemove() const { return m_lbox->GetSelection() != wxNOT_FOUND; }
    virtual void OnAdd() { ... obtener el nuevo elemento del usuario y añadirlo ... }
    virtual void OnRemove() { m_lbox->Delete(m_lbox->GetSelection()); }
 
private:
    wxListBox* m_lbox;
};
 
ctrl-Gt;SetAdaptor(new ListBoxAdaptor(lbox));

Funciones miembro

wxAddRemoveCtrl()

wxAddRemoveCtrl::wxAddRemoveCtrl()

Constructor por defecto.

Usar Create() más tarde.

wxAddRemoveCtrl()

wxAddRemoveCtrl::wxAddRemoveCtrl( wxWindow * parent, wxWindowID winid = wxID_ANY, const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, long style = 0, const wxString & name = wxAddRemoveCtrlNameStr )

Constructor que realmente crea la ventana de control.

SetAdaptor() todavía debe ser llamado más tarde para terminar de inicializar el control.

Los parámetros tienen el mismo significado que en wxPanel::Create().

Create()

bool wxAddRemoveCtrl::Create( wxWindow * parent, wxWindowID winid = wxID_ANY, const wxPoint & pos = wxDefaultPosition, const wxSize & size = wxDefaultSize, long style = 0, const wxString & name = wxAddRemoveCtrlNameStr )

Crea la ventana de control después de utilizar el constructor por defecto.

Los parámetros tienen el mismo significado que en wxPanel::Create().

SetAdaptor()

void wxAddRemoveCtrl::SetAdaptor(wxAddRemoveAdaptor * adaptor)

Asocia el control con el objeto adaptador especificado.

Este método debe ser llamado exactamente una vez para terminar de inicializar este objeto.

El objeto adaptador debe corresponder a un control creado como hijo de esta ventana, es decir, wxAddRemoveAdaptor::GetItemsCtrl() debe devolver un puntero a un hijo existente de este control.

El puntero del adaptador debe ser no nulo y estar asignado a la pila, ya que el control toma posesión de él y lo borrará más tarde.

SetButtonsToolTips()

void wxAddRemoveCtrl::SetButtonsToolTips( const wxString & addtip, const wxString & removetip )

Establece la información sobre los tooltips utilizados para los botones de añadir y eliminar.

Muestra los tooltips especificados cuando el ratón pasa por encima de los botones utilizados para añadir y eliminar elementos, respectivamente.

Este método sólo se puede utilizar después de llamar a SetAdaptor().

Métodos y datos heredados

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