| Version: 3.3.1

Public Member Functions | Protected Member Functions | List of all members
wxGridCellEditor Class Referenceabstract
Class List by Category » Grid Related Classes

`#include <wx/grid.h>`

Inheritance diagram for wxGridCellEditor:
[legend]

## Detailed Description

This class is responsible for providing and manipulating the in-place edit controls for the grid.

Instances of wxGridCellEditor (actually, instances of derived classes since it is an abstract class) can be associated with the cell attributes for individual cells, rows, columns, or even for the entire grid.

Normally wxGridCellEditor shows some UI control allowing the user to edit the cell, but starting with wxWidgets 3.1.4 it's also possible to define "activatable" cell editors, that change the value of the cell directly when it's activated (typically by pressing Space key or clicking on it), see TryActivate() method. Note that when implementing an editor which is always activatable, i.e. never shows any in-place editor, it is more convenient to derive its class from wxGridCellActivatableEditor than from wxGridCellEditor itself.

##

Library: wxCore
Category: Grid Related Classes

See also
  wxGridCellAutoWrapStringEditor, wxGridCellBoolEditor, wxGridCellChoiceEditor, wxGridCellEnumEditor, wxGridCellFloatEditor, wxGridCellNumberEditor, wxGridCellTextEditor, wxGridCellDateEditor

## Public Member Functions
| wxGridCellEditor ()
| Default constructor. More...
virtual void | BeginEdit (int row, int col, wxGrid *grid)=0
| Fetch the value from the table and prepare the edit control to begin editing. More...
virtual wxGridCellEditor * | Clone () const =0
| Create a new object which is the copy of this one. More...
virtual void | Create (wxWindow *parent, wxWindowID id, wxEvtHandler *evtHandler)=0
| Creates the actual edit control. More...
virtual void | Destroy ()
| Final cleanup. More...
virtual bool | EndEdit (int row, int col, const wxGrid *grid, const wxString &oldval, wxString *newval)=0
| End editing the cell. More...
virtual void | ApplyEdit (int row, int col, wxGrid *grid)=0
| Effectively save the changes in the grid. More...
virtual void | HandleReturn (wxKeyEvent &event)
| Some types of controls on some platforms may need some help with the Return key. More...
bool | IsCreated ()
| Returns true if the edit control has been created. More...
virtual void | PaintBackground (wxDC &dc, const wxRect &rectCell, const wxGridCellAttr &attr)
| Draws the part of the cell not occupied by the control: the base class version just fills it with background colour from the attribute. More...
virtual void | Reset ()=0
| Reset the value in the control back to its starting value. More...
virtual void | SetSize (const wxRect &rect)
| Size and position the edit control. More...
virtual void | Show (bool show, wxGridCellAttr *attr=nullptr)
| Show or hide the edit control, use the specified attributes to set colours/fonts for it. More...
virtual void | StartingClick ()
| If the editor is enabled by clicking on the cell, this method will be called. More...
virtual void | StartingKey (wxKeyEvent &event)
| If the editor is enabled by pressing keys on the grid, this will be called to let the editor do something about that first key if desired. More...
virtual bool | IsAcceptedKey (wxKeyEvent &event)
| Return true to allow the given key to start editing: the base class version only checks that the event has no modifiers. More...
virtual wxString | GetValue () const =0
| Returns the value currently in the editor control. More...
wxWindow * | GetWindow () const
| Get the edit window used by this editor. More...
void | SetWindow (wxWindow *window)
| Set the wxWindow that will be used by this cell editor for editing the value. More...
wxControl * | GetControl ()
| Get the wxControl used by this editor. More...
void | SetControl (wxControl *control)
| Set the wxControl that will be used by this cell editor for editing the value. More...
virtual wxGridActivationResult | TryActivate (int row, int col, wxGrid *grid, const wxGridActivationSource &actSource)
| Function allowing to create an "activatable" editor. More...
virtual void | DoActivate (int row, int col, wxGrid *grid)
| Function which must be overridden for "activatable" editors. More...
Public Member Functions inherited from wxSharedClientDataContainer
void * | GetClientData () const
| Get the untyped client data. More...
wxClientData * | GetClientObject () const
| Get a pointer to the client data object. More...
void | SetClientData (void *data)
| Set the untyped client data. More...
void | SetClientObject (wxClientData *data)
| Set the client data object. More...
Public Member Functions inherited from wxRefCounter
| wxRefCounter ()
| Default constructor. More...
void | DecRef ()
| Decrements the reference count associated with this shared data and, if it reaches zero, destroys this instance of wxRefCounter releasing its memory. More...
int | GetRefCount () const
| Returns the reference count associated with this shared data. More...
void | IncRef ()
| Increments the reference count associated with this shared data. More...

## Protected Member Functions
virtual | ~wxGridCellEditor ()
| The destructor is private because only DecRef() can delete us. More...
Protected Member Functions inherited from wxRefCounter
virtual | ~wxRefCounter ()
| Destructor. More...

## Constructor & Destructor Documentation

## ◆ wxGridCellEditor()

wxGridCellEditor::wxGridCellEditor | ( |  | ) |

Default constructor.

## ◆ ~wxGridCellEditor()

virtual wxGridCellEditor::~wxGridCellEditor | ( |  | ) |
| protected virtual

The destructor is private because only DecRef() can delete us.

## Member Function Documentation

## ◆ ApplyEdit()

virtual void wxGridCellEditor::ApplyEdit | ( | int | row,
|  | int | col,
|  | wxGrid * | grid
| ) |  |
| pure virtual

Effectively save the changes in the grid.

This function should save the value of the control in the grid. It is called only after EndEdit() returns true.

## ◆ BeginEdit()

virtual void wxGridCellEditor::BeginEdit | ( | int | row,
|  | int | col,
|  | wxGrid * | grid
| ) |  |
| pure virtual

Fetch the value from the table and prepare the edit control to begin editing.

This function should save the original value of the grid cell at the given row and col and show the control allowing the user to change it.

See also
  EndEdit()

## ◆ Clone()

virtual wxGridCellEditor* wxGridCellEditor::Clone | ( |  | ) | const
| pure virtual

Create a new object which is the copy of this one.

## ◆ Create()

virtual void wxGridCellEditor::Create | ( | wxWindow * | parent,
|  | wxWindowID | id,
|  | wxEvtHandler * | evtHandler
| ) |  |
| pure virtual

Creates the actual edit control.

## ◆ Destroy()

virtual void wxGridCellEditor::Destroy | ( |  | ) |
| virtual

Final cleanup.

## ◆ DoActivate()

virtual void wxGridCellEditor::DoActivate | ( | int | row,
|  | int | col,
|  | wxGrid * | grid
| ) |  |
| virtual

Function which must be overridden for "activatable" editors.

If TryActivate() is overridden to return "change" action, this function will be called to actually apply this change. Note that it is not passed the value to apply, as it is assumed that the editor class stores this value as a member variable anyhow.

Since
  3.1.4

Reimplemented in wxGridCellActivatableEditor.

## ◆ EndEdit()

virtual bool wxGridCellEditor::EndEdit | ( | int | row,
|  | int | col,
|  | const wxGrid * | grid,
|  | const wxString & | oldval,
|  | wxString * | newval
| ) |  |
| pure virtual

End editing the cell.

This function must check if the current value of the editing control is valid and different from the original value (available as oldval in its string form and possibly saved internally using its real type by BeginEdit()). If it isn't, it just returns false, otherwise it must do the following:

- Save the new value internally so that ApplyEdit() could apply it.
- Fill newval (which is never nullptr) with the string representation of the new value.
- Return true

Notice that it must not modify the grid as the change could still be vetoed.

If the user-defined wxEVT_GRID_CELL_CHANGING event handler doesn't veto this change, ApplyEdit() will be called next.

## ◆ GetControl()

wxControl* wxGridCellEditor::GetControl | ( |  | ) |

Get the wxControl used by this editor.

This function is preserved for compatibility, but GetWindow() should be preferred in the new code as the associated window doesn't need to be of a wxControl-derived class.

Note that if SetWindow() had been called with an object not deriving from wxControl, this method will return nullptr.

## ◆ GetValue()

virtual wxString wxGridCellEditor::GetValue | ( |  | ) | const
| pure virtual

Returns the value currently in the editor control.

## ◆ GetWindow()

wxWindow* wxGridCellEditor::GetWindow | ( |  | ) | const

Get the edit window used by this editor.

Since
  3.1.3

## ◆ HandleReturn()

virtual void wxGridCellEditor::HandleReturn | ( | wxKeyEvent & | event | ) |
| virtual

Some types of controls on some platforms may need some help with the Return key.

## ◆ IsAcceptedKey()

virtual bool wxGridCellEditor::IsAcceptedKey | ( | wxKeyEvent & | event | ) |
| virtual

Return true to allow the given key to start editing: the base class version only checks that the event has no modifiers.

If the key is F2 (special), editing will always start and this method will not be called at all (but StartingKey() will)

## ◆ IsCreated()

bool wxGridCellEditor::IsCreated | ( |  | ) |

Returns true if the edit control has been created.

## ◆ PaintBackground()

virtual void wxGridCellEditor::PaintBackground | ( | wxDC & | dc,
|  | const wxRect & | rectCell,
|  | const wxGridCellAttr & | attr
| ) |  |
| virtual

Draws the part of the cell not occupied by the control: the base class version just fills it with background colour from the attribute.

## ◆ Reset()

virtual void wxGridCellEditor::Reset | ( |  | ) |
| pure virtual

Reset the value in the control back to its starting value.

## ◆ SetControl()

void wxGridCellEditor::SetControl | ( | wxControl * | control | ) |

Set the wxControl that will be used by this cell editor for editing the value.

This function is preserved for compatibility, but SetWindow() should be preferred in the new code, see GetControl().

## ◆ SetSize()

virtual void wxGridCellEditor::SetSize | ( | const wxRect & | rect | ) |
| virtual

Size and position the edit control.

## ◆ SetWindow()

void wxGridCellEditor::SetWindow | ( | wxWindow * | window | ) |

Set the wxWindow that will be used by this cell editor for editing the value.

Since
  3.1.3

## ◆ Show()

virtual void wxGridCellEditor::Show | ( | bool | show,
|  | wxGridCellAttr * | attr = `nullptr`
| ) |  |
| virtual

Show or hide the edit control, use the specified attributes to set colours/fonts for it.

## ◆ StartingClick()

virtual void wxGridCellEditor::StartingClick | ( |  | ) |
| virtual

If the editor is enabled by clicking on the cell, this method will be called.

## ◆ StartingKey()

virtual void wxGridCellEditor::StartingKey | ( | wxKeyEvent & | event | ) |
| virtual

If the editor is enabled by pressing keys on the grid, this will be called to let the editor do something about that first key if desired.

## ◆ TryActivate()

virtual wxGridActivationResult wxGridCellEditor::TryActivate | ( | int | row,
|  | int | col,
|  | wxGrid * | grid,
|  | const wxGridActivationSource & | actSource
| ) |  |
| virtual

Function allowing to create an "activatable" editor.

As explained in this class description, activatable editors don't show any edit control but change the cell value directly, when it is activated (by any way described by wxGridActivationSource).

To create such editor, this method must be overridden to return wxGridActivationResult::DoChange() passing it the new value of the cell. If the change is not vetoed by wxEVT_GRID_CELL_CHANGING handler, DoActivate() will be called to actually change the value, so it must be overridden as well if TryActivate() is overridden.

By default, wxGridActivationResult::DoEdit() is returned, meaning that this is a normal editor, using an edit control for changing the cell value.

Since
  3.1.4

Reimplemented in wxGridCellActivatableEditor.