dataview.h

Clase wxDataViewCustomRenderer

Se necesita derivar una nueva clase de wxDataViewCustomRenderer para escribir un nuevo renderizador.

Jerarquía:

Jerarquía de wxDataViewCustomRenderer

Es necesario sobrescribir al menos wxDataViewRenderer::SetValue, wxDataViewRenderer::GetValue, wxDataViewCustomRenderer::GetSize y wxDataViewCustomRenderer::Render.

Si se quiere que el renderizador soporte la edición in-situ entonces también se necesita sobrescribir wxDataViewCustomRenderer::HasEditorCtrl, wxDataViewCustomRenderer::CreateEditorCtrl y wxDataViewCustomRenderer::GetValueFromEditorCtrl.

Si el símbolo de configuración wxUSE_ACCESSIBILITY está a 1, puede que se tenga que sobrescribir también wxDataViewRenderer::GetAccessibleDescription.

Hay que tener en cuenta que un controlador de eventos especial será introducido en ese control del editor que maneja ENTER y se enfocan los eventos con el fin de finalizar la edición.

Funciones miembro

wxDataViewCustomRenderer()

wxDataViewCustomRenderer::wxDataViewCustomRenderer( const wxString & varianttype = GetDefaultType(), wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT, int align = wxDVR_DEFAULT_ALIGNMENT )

Constructor.

~wxDataViewCustomRenderer()

virtual wxDataViewCustomRenderer::~wxDataViewCustomRenderer()

Destructor.

Activate()

virtual bool wxDataViewCustomRenderer::Activate( wxRect cell, wxDataViewModel * model, const wxDataViewItem & item, unsigned int col )

Sobrescribir para reaccionar a la activación de una celda.

Obsoleto: Utilizar ActivateCell en su lugar.

ActivateCell()

virtual bool wxDataViewCustomRenderer::ActivateCell( const wxRect & cell, wxDataViewModel * model, const wxDataViewItem & item, unsigned int col, const wxMouseEvent * mouseEvent )

Sobrescribir para reaccionar a la activación de celdas.

La activación de una celda es una alternativa a mostrar el editor en línea cuando el valor puede ser editado de una manera simple que no justifica el control completo del editor. El uso más típico de la activación de celdas es alternar la casilla de verificación en wxDataViewToggleRenderer; otros serían, por ejemplo, un deslizador de volumen incrustado o una columna de calificación de cinco estrellas.

Los medios exactos para activar una celda dependen de la plataforma, pero suelen ser similares a los utilizados para la edición en línea de valores. Normalmente, una celda se activa pulsando las teclas Espacio o Intro o haciendo clic con el botón izquierdo del ratón.

Este método sólo se ejecutará si la celda tiene el modo wxDATAVIEW_CELL_ACTIVATABLE.

Parámetros
cell
Coordenadas del área de la celda activada.
model
El modelo a manipular en respuesta.
item
Elemento activado.
col
Columna activada del ítem.
mouseEvent
Si la activación fue provocada por un clic del ratón, contiene el evento correspondiente. Si no, es nullptr (para activación por teclado). Las coordenadas del ratón se ajustan para ser relativas a la celda.

Nota: No confundir este método con la activación de ítems en wxDataViewCtrl y el evento wxEVT_DATAVIEW_ITEM_ACTIVATED. Éste se utiliza para activar el elemento (o, dicho de otro modo, toda la fila) de forma similar a los mensajes análogos en wxTreeCtrl y wxListCtrl, y el efecto difiere (reproducir una canción, abrir un archivo, etc.). La activación de celdas, por otro lado, consiste en interactuar con la celda individual.

CreateEditorCtrl()

virtual wxWindow* wxDataViewCustomRenderer::CreateEditorCtrl( wxWindow * parent, wxRect labelRect, const wxVariant & value )

Sobrescribir para crear el control del editor real una vez que la edición está a punto de comenzar.

Este método sólo será llamado si la celda tiene el modo wxDATAVIEW_CELL_EDITABLE. La edición se activa normalmente haciendo doble clic lentamente en la celda o mediante un atajo de teclado dependiente de la plataforma (F2 es típico en Windows, Espacio y/o Enter es común en otros sitios y soportado también en Windows).

Parámetros
parent
El padre del control del editor.
labelRect
Indica la posición y el tamaño del control del editor. El control debe crearse en lugar de la celda y labelRect debe respetarse en la medida de lo posible.
value
Valor inicial del editor.

Un ejemplo:

pre class="ejemplo"> { long l = valor; return new wxSpinCtrl( parent, wxID_ANY, wxEmptyString, labelRect.GetTopLeft(), labelRect.GetSize(), 0, 0, 100, l ); }

Nota: Actualmente el soporte para este método no está implementado en la versión nativa macOS del control, es decir, nunca será llamado allí.

Reimplementado desde wxDataViewRenderer.

GetAttr()

const wxDataViewItemAttr& wxDataViewCustomRenderer::GetAttr() const

Devuelve el atributo que se utilizará para el renderizado.

Esta función puede ser llamada desde la implementación de Render() para utilizar los atributos definidos para el elemento si el renderizador los soporta.

Hay que tener en cuenta que cuando se llama a Render(), el objeto wxDC que se le pasa ya está configurado para utilizar los atributos correctos (por ejemplo, su fuente está configurada en la versión negrita o cursiva si /wxDataViewItemAttr::GetBold() o GetItalic() devuelve true) por lo que puede que no sea necesario llamarlo explícitamente si sólo desea renderizar el texto utilizando los atributos de los elementos.

GetDefaultType()

static wxString wxDataViewCustomRenderer::GetDefaultType()

Devuelve el tipo de wxVariant utilizado con este renderizador.

GetSize()

virtual wxSize wxDataViewCustomRenderer::GetSize() const

Devuelve el tamaño necesario para mostrar el contenido.

GetTextExtent()

wxSize wxDataViewCustomRenderer::GetTextExtent(const wxString & str) const

Ayuda para las implementaciones de GetSize(), respeta los atributos.

GetValueFromEditorCtrl()

virtual bool wxDataViewCustomRenderer::GetValueFromEditorCtrl( wxWindow * editor, wxVariant & value )

Sobrescribir para que el renderizador pueda obtener el valor del control del editor (apuntado por editor):

{
 wxSpinCtrl *sc = (wxSpinCtrl*) editor;
 long l = sc->GetValue();
 value = l;
 return true;
}

Reimplementado de wxDataViewRenderer.

HasEditorCtrl()

virtual bool wxDataViewCustomRenderer::HasEditorCtrl() const

Sobrescribir y hacer que devuelva true para indicar que este renderizador soporta edición in-place.

Reimplementado de wxDataViewRenderer.

LeftClick()

virtual bool wxDataViewCustomRenderer::LeftClick( wxPoint cursor, wxRect cell, wxDataViewModel * model, const wxDataViewItem & item, unsigned int col )

Sobrescribir para reaccionar a un click izquierdo.

Este método sólo será llamado en modo wxDATAVIEW_CELL_ACTIVATABLE.

Obsoleto

Utilizar ActivateCell en su lugar.

Render()

virtual bool wxDataViewCustomRenderer::Render( wxRect cell, wxDC * dc, int state )

Sobrescribir para renderizar la celda.

Antes de llamar a esta función, se llama a wxDataViewRenderer::SetValue para que esta instancia sepa qué debe representar.

RenderText()

void wxDataViewCustomRenderer::RenderText( const wxString & text, int xoffset, wxRect cell, wxDC * dc, int state )

Este método debe ser llamado desde dentro de Render() siempre que necesite renderizar texto simple.

Esto asegurará que el color correcto, la fuente y la alineación vertical serán elegidos para que el texto se vea igual que el texto dibujado por los renderizadores nativos.

StartDrag()

virtual bool wxDataViewCustomRenderer::StartDrag( const wxPoint & cursor, const wxRect & cell, wxDataViewModel * model, const wxDataViewItem & item, unsigned int col )

Sobrescribir esta opción para iniciar una operación de arrastre.

Aún no se admite.

Métodos y datos heredados

Esta clase hereda los métodos y datos miembro públicos y protegidos de wxObject y wxDataViewRenderer.