Clase wxDataViewCustomRenderer
Se necesita derivar una nueva clase de wxDataViewCustomRenderer para escribir un nuevo renderizador.
Jerarquía:

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()
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()
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.