#include <wx/dataview.h>
You need to override at least wxDataViewRenderer::SetValue, wxDataViewRenderer::GetValue, wxDataViewCustomRenderer::GetSize and wxDataViewCustomRenderer::Render.
If you want your renderer to support in-place editing then you also need to override wxDataViewCustomRenderer::HasEditorCtrl, wxDataViewCustomRenderer::CreateEditorCtrl and wxDataViewCustomRenderer::GetValueFromEditorCtrl.
Note that a special event handler will be pushed onto that editor control which handles <ENTER> and focus out events in order to end the editing.
Public Member Functions | |
wxDataViewCustomRenderer (const wxString &varianttype="string", wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=-1, bool no_init=false) | |
Constructor. | |
virtual | ~wxDataViewCustomRenderer () |
Destructor. | |
virtual bool | Activate (wxRect cell, wxDataViewModel *model, const wxDataViewItem &item, unsigned int col) |
Override this to react to double clicks or ENTER. | |
virtual wxControl * | CreateEditorCtrl (wxWindow *parent, wxRect labelRect, const wxVariant &value) |
Override this to create the actual editor control once editing is about to start. | |
virtual wxDC * | GetDC () |
Create DC on request. | |
virtual wxSize | GetSize () const =0 |
Return size required to show content. | |
virtual bool | GetValueFromEditorCtrl (wxControl *editor, wxVariant &value) |
Overrride this so that the renderer can get the value from the editor control (pointed to by editor):. | |
virtual bool | HasEditorCtrl () const |
Override this and make it return true in order to indicate that this renderer supports in-place editing. | |
virtual bool | LeftClick (wxPoint cursor, wxRect cell, wxDataViewModel *model, const wxDataViewItem &item, unsigned int col) |
Overrride this to react to a left click. | |
virtual bool | Render (wxRect cell, wxDC *dc, int state)=0 |
Override this to render the cell. | |
void | RenderText (const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state) |
This method should be called from within Render() whenever you need to render simple text. | |
virtual bool | StartDrag (wxPoint cursor, wxRect cell, wxDataViewModel *model, const wxDataViewItem &item, unsigned int col) |
Overrride this to start a drag operation. |
wxDataViewCustomRenderer::wxDataViewCustomRenderer | ( | const wxString & | varianttype = "string" , |
|
wxDataViewCellMode | mode = wxDATAVIEW_CELL_INERT , |
|||
int | align = -1 , |
|||
bool | no_init = false | |||
) |
Constructor.
virtual wxDataViewCustomRenderer::~wxDataViewCustomRenderer | ( | ) | [virtual] |
Destructor.
virtual bool wxDataViewCustomRenderer::Activate | ( | wxRect | cell, | |
wxDataViewModel * | model, | |||
const wxDataViewItem & | item, | |||
unsigned int | col | |||
) | [virtual] |
Override this to react to double clicks or ENTER.
This method will only be called in wxDATAVIEW_CELL_ACTIVATABLE mode.
virtual wxControl* wxDataViewCustomRenderer::CreateEditorCtrl | ( | wxWindow * | parent, | |
wxRect | labelRect, | |||
const wxVariant & | value | |||
) | [virtual] |
Override this to create the actual editor control once editing is about to start.
parent is the parent of the editor control, labelRect indicates the position and size of the editor control and value is its initial value:
{ long l = value; return new wxSpinCtrl( parent, wxID_ANY, wxEmptyString, labelRect.GetTopLeft(), labelRect.GetSize(), 0, 0, 100, l ); }
virtual wxDC* wxDataViewCustomRenderer::GetDC | ( | ) | [virtual] |
Create DC on request.
Internal.
virtual wxSize wxDataViewCustomRenderer::GetSize | ( | ) | const [pure virtual] |
Return size required to show content.
virtual bool wxDataViewCustomRenderer::GetValueFromEditorCtrl | ( | wxControl * | editor, | |
wxVariant & | value | |||
) | [virtual] |
Overrride this so that the renderer can get the value from the editor control (pointed to by editor):.
{ wxSpinCtrl *sc = (wxSpinCtrl*) editor; long l = sc->GetValue(); value = l; return true; }
virtual bool wxDataViewCustomRenderer::HasEditorCtrl | ( | ) | const [virtual] |
Override this and make it return true in order to indicate that this renderer supports in-place editing.
virtual bool wxDataViewCustomRenderer::LeftClick | ( | wxPoint | cursor, | |
wxRect | cell, | |||
wxDataViewModel * | model, | |||
const wxDataViewItem & | item, | |||
unsigned int | col | |||
) | [virtual] |
Overrride this to react to a left click.
This method will only be called in wxDATAVIEW_CELL_ACTIVATABLE
mode.
Override this to render the cell.
Before this is called, wxDataViewRenderer::SetValue was called so that this instance knows what to render.
void wxDataViewCustomRenderer::RenderText | ( | const wxString & | text, | |
int | xoffset, | |||
wxRect | cell, | |||
wxDC * | dc, | |||
int | state | |||
) |
This method should be called from within Render() whenever you need to render simple text.
This will ensure that the correct colour, font and vertical alignment will be chosen so the text will look the same as text drawn by native renderers.
virtual bool wxDataViewCustomRenderer::StartDrag | ( | wxPoint | cursor, | |
wxRect | cell, | |||
wxDataViewModel * | model, | |||
const wxDataViewItem & | item, | |||
unsigned int | col | |||
) | [virtual] |
Overrride this to start a drag operation.
Not yet supported.
![]() |
[ top ] |