1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxGrid and related classes
4 // Author: wxWidgets team
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
10 @class wxGridCellRenderer
12 This class is responsible for actually drawing the cell in the grid. You
13 may pass it to the wxGridCellAttr (below) to change the format of one given
14 cell or to wxGrid::SetDefaultRenderer() to change the view of all cells.
15 This is an abstract class, and you will normally use one of the predefined
16 derived classes or derive your own class from it.
21 @see wxGridCellAutoWrapStringRenderer, wxGridCellBoolRenderer,
22 wxGridCellDateTimeRenderer, wxGridCellEnumRenderer,
23 wxGridCellFloatRenderer, wxGridCellNumberRenderer,
24 wxGridCellStringRenderer
26 class wxGridCellRenderer
: public wxClientDataContainer
, public wxRefCounter
32 This function must be implemented in derived classes to return a copy
35 virtual wxGridCellRenderer
* Clone() const = 0;
38 Draw the given cell on the provided DC inside the given rectangle using
39 the style specified by the attribute and the default or selected state
40 corresponding to the isSelected value.
42 This pure virtual function has a default implementation which will
43 prepare the DC using the given attribute: it will draw the rectangle
44 with the background colour from attr and set the text colour and font.
46 virtual void Draw(wxGrid
& grid
, wxGridCellAttr
& attr
, wxDC
& dc
,
47 const wxRect
& rect
, int row
, int col
,
51 Get the preferred size of the cell for its contents.
53 virtual wxSize
GetBestSize(wxGrid
& grid
, wxGridCellAttr
& attr
, wxDC
& dc
,
54 int row
, int col
) = 0;
58 The destructor is private because only DecRef() can delete us.
60 virtual ~wxGridCellRenderer();
64 @class wxGridCellAutoWrapStringRenderer
66 This class may be used to format string data in a cell. The too
67 long lines are wrapped to be shown entirely at word boundaries.
72 @see wxGridCellRenderer, wxGridCellBoolRenderer,
73 wxGridCellDateTimeRenderer, wxGridCellEnumRenderer,
74 wxGridCellFloatRenderer, wxGridCellNumberRenderer,
75 wxGridCellStringRenderer
78 class wxGridCellAutoWrapStringRenderer
: public wxGridCellStringRenderer
84 wxGridCellAutoWrapStringRenderer();
89 @class wxGridCellBoolRenderer
91 This class may be used to format boolean data in a cell.
96 @see wxGridCellRenderer, wxGridCellAutoWrapStringRenderer,
97 wxGridCellDateTimeRenderer, wxGridCellEnumRenderer,
98 wxGridCellFloatRenderer, wxGridCellNumberRenderer,
99 wxGridCellStringRenderer
101 class wxGridCellBoolRenderer
: public wxGridCellRenderer
107 wxGridCellBoolRenderer();
111 @class wxGridCellDateTimeRenderer
113 This class may be used to format a date/time data in a cell.
114 The class wxDateTime is used internally to display the local date/time
115 or to parse the string date entered in the cell thanks to the defined format.
120 @see wxGridCellRenderer, wxGridCellAutoWrapStringRenderer,
121 wxGridCellBoolRenderer, wxGridCellEnumRenderer,
122 wxGridCellFloatRenderer, wxGridCellNumberRenderer,
123 wxGridCellStringRenderer
125 class wxGridCellDateTimeRenderer
: public wxGridCellStringRenderer
129 Date/time renderer constructor.
132 strptime()-like format string used the parse the output date/time.
134 strptime()-like format string used to parse the string entered in the cell.
136 wxGridCellDateTimeRenderer(const wxString
& outformat
= wxDefaultDateTimeFormat
,
137 const wxString
& informat
= wxDefaultDateTimeFormat
);
141 Sets the strptime()-like format string which will be used to parse
145 strptime()-like format string used to parse the date/time.
147 virtual void SetParameters(const wxString
& params
);
151 @class wxGridCellEnumRenderer
153 This class may be used to render in a cell a number as a textual
156 The corresponding text strings are specified as comma-separated items in
157 the string passed to this renderer ctor or SetParameters() method. For
158 example, if this string is @c "John,Fred,Bob" the cell will be rendered as
159 "John", "Fred" or "Bob" if its contents is 0, 1 or 2 respectively.
164 @see wxGridCellRenderer, wxGridCellAutoWrapStringRenderer,
165 wxGridCellBoolRenderer, wxGridCellDateTimeRenderer,
166 wxGridCellFloatRenderer, wxGridCellNumberRenderer,
167 wxGridCellStringRenderer
169 class wxGridCellEnumRenderer
: public wxGridCellStringRenderer
176 Comma separated string parameters "item1[,item2[...,itemN]]".
178 wxGridCellEnumRenderer( const wxString
& choices
= wxEmptyString
);
181 Sets the comma separated string content of the enum.
184 Comma separated string parameters "item1[,item2[...,itemN]]".
186 virtual void SetParameters(const wxString
& params
);
190 Specifier used to format the data to string for the numbers handled by
191 wxGridCellFloatRenderer and wxGridCellFloatEditor.
195 enum wxGridCellFloatFormat
197 /// Decimal floating point (%f).
198 wxGRID_FLOAT_FORMAT_FIXED
= 0x0010,
200 /// Scientific notation (mantise/exponent) using e character (%e).
201 wxGRID_FLOAT_FORMAT_SCIENTIFIC
= 0x0020,
203 /// Use the shorter of %e or %f (%g).
204 wxGRID_FLOAT_FORMAT_COMPACT
= 0x0040,
206 /// To use in combination with one of the above formats for the upper
207 /// case version (%F/%E/%G)
208 wxGRID_FLOAT_FORMAT_UPPER
= 0x0080,
210 /// The format used by default (wxGRID_FLOAT_FORMAT_FIXED).
211 wxGRID_FLOAT_FORMAT_DEFAULT
= wxGRID_FLOAT_FORMAT_FIXED
215 @class wxGridCellFloatRenderer
217 This class may be used to format floating point data in a cell.
222 @see wxGridCellRenderer, wxGridCellAutoWrapStringRenderer,
223 wxGridCellBoolRenderer, wxGridCellDateTimeRenderer,
224 wxGridCellEnumRenderer, wxGridCellNumberRenderer,
225 wxGridCellStringRenderer
227 class wxGridCellFloatRenderer
: public wxGridCellStringRenderer
231 Float cell renderer ctor.
234 Minimum number of characters to be shown.
236 Number of digits after the decimal dot.
238 The format used to display the string, must be a combination of
239 ::wxGridCellFloatFormat enum elements. This parameter is only
240 available since wxWidgets 2.9.3.
242 wxGridCellFloatRenderer(int width
= -1, int precision
= -1,
243 int format
= wxGRID_FLOAT_FORMAT_DEFAULT
);
246 Returns the specifier used to format the data to string.
248 The returned value is a combination of ::wxGridCellFloatFormat elements.
252 int GetFormat() const;
255 Returns the precision.
257 int GetPrecision() const;
262 int GetWidth() const;
265 Set the format to use for display the number.
268 Must be a combination of ::wxGridCellFloatFormat enum elements.
272 void SetFormat(int format
);
275 The parameters string format is "width[,precision[,format]]" where
276 @c format should be chosen between f|e|g|E|G (f is used by default)
278 virtual void SetParameters(const wxString
& params
);
283 void SetPrecision(int precision
);
288 void SetWidth(int width
);
292 @class wxGridCellNumberRenderer
294 This class may be used to format integer data in a cell.
299 @see wxGridCellRenderer, wxGridCellAutoWrapStringRenderer,
300 wxGridCellBoolRenderer, wxGridCellDateTimeRenderer,
301 wxGridCellEnumRenderer, wxGridCellFloatRenderer,
302 wxGridCellStringRenderer
304 class wxGridCellNumberRenderer
: public wxGridCellStringRenderer
310 wxGridCellNumberRenderer();
314 @class wxGridCellStringRenderer
316 This class may be used to format string data in a cell; it is the default
322 @see wxGridCellRenderer, wxGridCellAutoWrapStringRenderer,
323 wxGridCellBoolRenderer, wxGridCellDateTimeRenderer,
324 wxGridCellEnumRenderer, wxGridCellFloatRenderer,
325 wxGridCellNumberRenderer
327 class wxGridCellStringRenderer
: public wxGridCellRenderer
333 wxGridCellStringRenderer();
338 @class wxGridCellEditor
340 This class is responsible for providing and manipulating the in-place edit
341 controls for the grid. Instances of wxGridCellEditor (actually, instances
342 of derived classes since it is an abstract class) can be associated with
343 the cell attributes for individual cells, rows, columns, or even for the
349 @see wxGridCellAutoWrapStringEditor, wxGridCellBoolEditor,
350 wxGridCellChoiceEditor, wxGridCellEnumEditor,
351 wxGridCellFloatEditor, wxGridCellNumberEditor,
354 class wxGridCellEditor
: public wxClientDataContainer
, public wxRefCounter
363 Fetch the value from the table and prepare the edit control to begin
366 This function should save the original value of the grid cell at the
367 given @a row and @a col and show the control allowing the user to
372 virtual void BeginEdit(int row
, int col
, wxGrid
* grid
) = 0;
375 Create a new object which is the copy of this one.
377 virtual wxGridCellEditor
* Clone() const = 0;
380 Creates the actual edit control.
382 virtual void Create(wxWindow
* parent
, wxWindowID id
,
383 wxEvtHandler
* evtHandler
) = 0;
388 virtual void Destroy();
391 End editing the cell.
393 This function must check if the current value of the editing control is
394 valid and different from the original value (available as @a oldval in
395 its string form and possibly saved internally using its real type by
396 BeginEdit()). If it isn't, it just returns @false, otherwise it must do
398 - Save the new value internally so that ApplyEdit() could apply it.
399 - Fill @a newval (which is never @NULL) with the string
400 representation of the new value.
403 Notice that it must @em not modify the grid as the change could still
406 If the user-defined wxEVT_GRID_CELL_CHANGING event handler doesn't veto
407 this change, ApplyEdit() will be called next.
409 virtual bool EndEdit(int row
, int col
, const wxGrid
* grid
,
410 const wxString
& oldval
, wxString
* newval
) = 0;
413 Effectively save the changes in the grid.
415 This function should save the value of the control in the grid. It is
416 called only after EndEdit() returns @true.
418 virtual void ApplyEdit(int row
, int col
, wxGrid
* grid
) = 0;
421 Some types of controls on some platforms may need some help with the
424 virtual void HandleReturn(wxKeyEvent
& event
);
427 Returns @true if the edit control has been created.
432 Draws the part of the cell not occupied by the control: the base class
433 version just fills it with background colour from the attribute.
435 virtual void PaintBackground(wxDC
& dc
, const wxRect
& rectCell
, wxGridCellAttr
& attr
);
438 Reset the value in the control back to its starting value.
440 virtual void Reset() = 0;
443 Size and position the edit control.
445 virtual void SetSize(const wxRect
& rect
);
448 Show or hide the edit control, use the specified attributes to set
449 colours/fonts for it.
451 virtual void Show(bool show
, wxGridCellAttr
* attr
= NULL
);
454 If the editor is enabled by clicking on the cell, this method will be
457 virtual void StartingClick();
460 If the editor is enabled by pressing keys on the grid, this will be
461 called to let the editor do something about that first key if desired.
463 virtual void StartingKey(wxKeyEvent
& event
);
466 Returns the value currently in the editor control.
468 virtual wxString
GetValue() const = 0;
473 The destructor is private because only DecRef() can delete us.
475 virtual ~wxGridCellEditor();
479 @class wxGridCellAutoWrapStringEditor
481 Grid cell editor for wrappable string/text data.
486 @see wxGridCellEditor, wxGridCellBoolEditor, wxGridCellChoiceEditor,
487 wxGridCellEnumEditor, wxGridCellFloatEditor,
488 wxGridCellNumberEditor, wxGridCellTextEditor
490 class wxGridCellAutoWrapStringEditor
: public wxGridCellTextEditor
493 wxGridCellAutoWrapStringEditor();
497 @class wxGridCellBoolEditor
499 Grid cell editor for boolean data.
504 @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
505 wxGridCellChoiceEditor, wxGridCellEnumEditor,
506 wxGridCellFloatEditor, wxGridCellNumberEditor,
509 class wxGridCellBoolEditor
: public wxGridCellEditor
515 wxGridCellBoolEditor();
518 Returns @true if the given @a value is equal to the string
519 representation of the truth value we currently use (see
522 static bool IsTrueValue(const wxString
& value
);
525 This method allows you to customize the values returned by GetValue()
526 for the cell using this editor. By default, the default values of the
527 arguments are used, i.e. @c "1" is returned if the cell is checked and
528 an empty string otherwise.
530 static void UseStringValues(const wxString
& valueTrue
= "1",
531 const wxString
& valueFalse
= wxEmptyString
);
535 @class wxGridCellChoiceEditor
537 Grid cell editor for string data providing the user a choice from a list of
543 @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
544 wxGridCellBoolEditor, wxGridCellEnumEditor,
545 wxGridCellFloatEditor, wxGridCellNumberEditor,
548 class wxGridCellChoiceEditor
: public wxGridCellEditor
552 Choice cell renderer ctor.
555 Number of strings from which the user can choose.
557 An array of strings from which the user can choose.
559 If allowOthers is @true, the user can type a string not in choices
562 wxGridCellChoiceEditor(size_t count
= 0,
563 const wxString choices
[] = NULL
,
564 bool allowOthers
= false);
567 Choice cell renderer ctor.
570 An array of strings from which the user can choose.
572 If allowOthers is @true, the user can type a string not in choices
575 wxGridCellChoiceEditor(const wxArrayString
& choices
,
576 bool allowOthers
= false);
579 Parameters string format is "item1[,item2[...,itemN]]"
581 virtual void SetParameters(const wxString
& params
);
585 @class wxGridCellEnumEditor
587 Grid cell editor which displays an enum number as a textual equivalent
588 (eg. data in cell is 0,1,2 ... n the cell could be displayed as
589 "John","Fred"..."Bob" in the combo choice box).
594 @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
595 wxGridCellBoolEditor, wxGridCellChoiceEditor,
596 wxGridCellTextEditor, wxGridCellFloatEditor,
597 wxGridCellNumberEditor
599 class wxGridCellEnumEditor
: public wxGridCellChoiceEditor
603 Enum cell editor ctor.
606 Comma separated choice parameters "item1[,item2[...,itemN]]".
608 wxGridCellEnumEditor( const wxString
& choices
= wxEmptyString
);
612 @class wxGridCellTextEditor
614 Grid cell editor for string/text data.
619 @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
620 wxGridCellBoolEditor, wxGridCellChoiceEditor,
621 wxGridCellEnumEditor, wxGridCellFloatEditor,
622 wxGridCellNumberEditor
624 class wxGridCellTextEditor
: public wxGridCellEditor
628 Text cell editor constructor.
631 Maximum width of text (this parameter is supported starting since
634 explicit wxGridCellTextEditor(size_t maxChars
= 0);
637 The parameters string format is "n" where n is a number representing
640 virtual void SetParameters(const wxString
& params
);
644 @class wxGridCellFloatEditor
646 The editor for floating point numbers data.
651 @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
652 wxGridCellBoolEditor, wxGridCellChoiceEditor,
653 wxGridCellEnumEditor, wxGridCellNumberEditor,
656 class wxGridCellFloatEditor
: public wxGridCellTextEditor
660 Float cell editor ctor.
663 Minimum number of characters to be shown.
665 Number of digits after the decimal dot.
667 The format to use for displaying the number, a combination of
668 ::wxGridCellFloatFormat enum elements. This parameter is only
669 available since wxWidgets 2.9.3.
671 wxGridCellFloatEditor(int width
= -1, int precision
= -1,
672 int format
= wxGRID_FLOAT_FORMAT_DEFAULT
);
675 The parameters string format is "width[,precision[,format]]" where
676 @c format should be chosen between f|e|g|E|G (f is used by default)
678 virtual void SetParameters(const wxString
& params
);
682 @class wxGridCellNumberEditor
684 Grid cell editor for numeric integer data.
689 @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
690 wxGridCellBoolEditor, wxGridCellChoiceEditor,
691 wxGridCellEnumEditor, wxGridCellFloatEditor,
694 class wxGridCellNumberEditor
: public wxGridCellTextEditor
698 Allows you to specify the range for acceptable data. Values equal to
699 -1 for both @a min and @a max indicate that no range checking should be
702 wxGridCellNumberEditor(int min
= -1, int max
= -1);
706 Parameters string format is "min,max".
708 virtual void SetParameters(const wxString
& params
);
713 If the return value is @true, the editor uses a wxSpinCtrl to get user
714 input, otherwise it uses a wxTextCtrl.
716 bool HasRange() const;
719 String representation of the value.
721 wxString
GetString() const;
727 @class wxGridCellAttr
729 This class can be used to alter the cells' appearance in the grid by
730 changing their attributes from the defaults. An object of this class may be
731 returned by wxGridTableBase::GetAttr().
736 class wxGridCellAttr
: public wxClientDataContainer
, public wxRefCounter
740 Kind of the attribute to retrieve.
742 @see wxGridCellAttrProvider::GetAttr(), wxGridTableBase::GetAttr()
746 /// Return the combined effective attribute for the cell.
749 /// Return the attribute explicitly set for this cell.
752 /// Return the attribute set for this cells row.
755 /// Return the attribute set for this cells column.
762 wxGridCellAttr(wxGridCellAttr
* attrDefault
= NULL
);
764 Constructor specifying some of the often used attributes.
766 wxGridCellAttr(const wxColour
& colText
, const wxColour
& colBack
,
767 const wxFont
& font
, int hAlign
, int vAlign
);
770 Creates a new copy of this object.
772 wxGridCellAttr
* Clone() const;
775 This class is reference counted: it is created with ref count of 1, so
776 calling DecRef() once will delete it. Calling IncRef() allows to lock
777 it until the matching DecRef() is called.
782 Get the alignment to use for the cell with the given attribute.
784 If this attribute doesn't specify any alignment, the default attribute
785 alignment is used (which can be changed using
786 wxGrid::SetDefaultCellAlignment() but is left and top by default).
788 Notice that @a hAlign and @a vAlign values are always overwritten by
789 this function, use GetNonDefaultAlignment() if this is not desirable.
792 Horizontal alignment is returned here if this argument is non-@NULL.
793 It is one of wxALIGN_LEFT, wxALIGN_CENTRE or wxALIGN_RIGHT.
795 Vertical alignment is returned here if this argument is non-@NULL.
796 It is one of wxALIGN_TOP, wxALIGN_CENTRE or wxALIGN_BOTTOM.
798 void GetAlignment(int* hAlign
, int* vAlign
) const;
801 Returns the background colour.
803 const wxColour
& GetBackgroundColour() const;
806 Returns the cell editor.
808 wxGridCellEditor
* GetEditor(const wxGrid
* grid
, int row
, int col
) const;
813 const wxFont
& GetFont() const;
816 Get the alignment defined by this attribute.
818 Unlike GetAlignment() this function only modifies @a hAlign and @a
819 vAlign if this attribute does define a non-default alignment. This
820 means that they must be initialized before calling this function and
821 that their values will be preserved unchanged if they are different
822 from wxALIGN_INVALID.
824 For example, the following fragment can be used to use the cell
825 alignment if one is defined but right-align its contents by default
826 (instead of left-aligning it by default) while still using the default
829 int hAlign = wxALIGN_RIGHT,
830 vAlign = wxALIGN_INVALID;
831 attr.GetNonDefaultAlignment(&hAlign, &vAlign);
836 void GetNonDefaultAlignment(int *hAlign
, int *vAlign
) const;
839 Returns the cell renderer.
841 wxGridCellRenderer
* GetRenderer(const wxGrid
* grid
, int row
, int col
) const;
844 Returns the text colour.
846 const wxColour
& GetTextColour() const;
849 Returns @true if this attribute has a valid alignment set.
851 bool HasAlignment() const;
854 Returns @true if this attribute has a valid background colour set.
856 bool HasBackgroundColour() const;
859 Returns @true if this attribute has a valid cell editor set.
861 bool HasEditor() const;
864 Returns @true if this attribute has a valid font set.
866 bool HasFont() const;
869 Returns @true if this attribute has a valid cell renderer set.
871 bool HasRenderer() const;
874 Returns @true if this attribute has a valid text colour set.
876 bool HasTextColour() const;
879 This class is reference counted: it is created with ref count of 1, so
880 calling DecRef() once will delete it. Calling IncRef() allows to lock
881 it until the matching DecRef() is called.
886 Returns @true if this cell is set as read-only.
888 bool IsReadOnly() const;
891 Sets the alignment. @a hAlign can be one of @c wxALIGN_LEFT,
892 @c wxALIGN_CENTRE or @c wxALIGN_RIGHT and @a vAlign can be one of
893 @c wxALIGN_TOP, @c wxALIGN_CENTRE or @c wxALIGN_BOTTOM.
895 void SetAlignment(int hAlign
, int vAlign
);
898 Sets the background colour.
900 void SetBackgroundColour(const wxColour
& colBack
);
903 @todo Needs documentation.
905 void SetDefAttr(wxGridCellAttr
* defAttr
);
908 Sets the editor to be used with the cells with this attribute.
910 void SetEditor(wxGridCellEditor
* editor
);
915 void SetFont(const wxFont
& font
);
918 Sets the cell as read-only.
920 void SetReadOnly(bool isReadOnly
= true);
923 Sets the renderer to be used for cells with this attribute. Takes
924 ownership of the pointer.
926 void SetRenderer(wxGridCellRenderer
* renderer
);
929 Sets the text colour.
931 void SetTextColour(const wxColour
& colText
);
936 The destructor is private because only DecRef() can delete us.
938 virtual ~wxGridCellAttr();
942 Base class for corner window renderer.
944 This is the simplest of all header renderers and only has a single
947 @see wxGridCellAttrProvider::GetCornerRenderer()
951 class wxGridCornerHeaderRenderer
955 Called by the grid to draw the corner window border.
957 This method is responsible for drawing the border inside the given @a
958 rect and adjusting the rectangle size to correspond to the area inside
959 the border, i.e. usually call wxRect::Deflate() to account for the
963 The grid whose corner window is being drawn.
965 The device context to use for drawing.
967 Input/output parameter which contains the border rectangle on input
968 and should be updated to contain the area inside the border on
971 virtual void DrawBorder(const wxGrid
& grid
,
973 wxRect
& rect
) const = 0;
977 Common base class for row and column headers renderers.
979 @see wxGridColumnHeaderRenderer, wxGridRowHeaderRenderer
983 class wxGridHeaderLabelsRenderer
: public wxGridCornerHeaderRenderer
987 Called by the grid to draw the specified label.
989 Notice that the base class DrawBorder() method is called before this
992 The default implementation uses wxGrid::GetLabelTextColour() and
993 wxGrid::GetLabelFont() to draw the label.
995 virtual void DrawLabel(const wxGrid
& grid
,
997 const wxString
& value
,
1001 int textOrientation
) const;
1005 Base class for row headers renderer.
1007 This is the same as wxGridHeaderLabelsRenderer currently but we still use a
1008 separate class for it to distinguish it from wxGridColumnHeaderRenderer.
1010 @see wxGridRowHeaderRendererDefault
1012 @see wxGridCellAttrProvider::GetRowHeaderRenderer()
1016 class wxGridRowHeaderRenderer
: public wxGridHeaderLabelsRenderer
1021 Base class for column headers renderer.
1023 This is the same as wxGridHeaderLabelsRenderer currently but we still use a
1024 separate class for it to distinguish it from wxGridRowHeaderRenderer.
1026 @see wxGridColumnHeaderRendererDefault
1028 @see wxGridCellAttrProvider::GetColumnHeaderRenderer()
1032 class wxGridColumnHeaderRenderer
: public wxGridHeaderLabelsRenderer
1037 Default row header renderer.
1039 You may derive from this class if you need to only override one of its
1040 methods (i.e. either DrawLabel() or DrawBorder()) but continue to use the
1041 default implementation for the other one.
1043 @see wxGridColumnHeaderRendererDefault
1047 class wxGridRowHeaderRendererDefault
: public wxGridRowHeaderRenderer
1050 /// Implement border drawing for the row labels.
1051 virtual void DrawBorder(const wxGrid
& grid
,
1053 wxRect
& rect
) const;
1057 Default column header renderer.
1059 @see wxGridRowHeaderRendererDefault
1063 class wxGridColumnHeaderRendererDefault
: public wxGridColumnHeaderRenderer
1066 /// Implement border drawing for the column labels.
1067 virtual void DrawBorder(const wxGrid
& grid
,
1069 wxRect
& rect
) const;
1073 Default corner window renderer.
1075 @see wxGridColumnHeaderRendererDefault, wxGridRowHeaderRendererDefault
1079 class wxGridCornerHeaderRendererDefault
: public wxGridCornerHeaderRenderer
1082 /// Implement border drawing for the corner window.
1083 virtual void DrawBorder(const wxGrid
& grid
,
1085 wxRect
& rect
) const;
1089 Class providing attributes to be used for the grid cells.
1091 This class both defines an interface which grid cell attributes providers
1092 should implement -- and which can be implemented differently in derived
1093 classes -- and a default implementation of this interface which is often
1094 good enough to be used without modification, especially with not very large
1095 grids for which the efficiency of attributes storage hardly matters (see
1096 the discussion below).
1098 An object of this class can be associated with a wxGrid using
1099 wxGridTableBase::SetAttrProvider() but it's not necessary to call it if you
1100 intend to use the default provider as it is used by wxGridTableBase by
1103 Notice that while attributes provided by this class can be set for
1104 individual cells using SetAttr() or the entire rows or columns using
1105 SetRowAttr() and SetColAttr() they are always retrieved using GetAttr()
1109 The default implementation of this class stores the attributes passed to
1110 its SetAttr(), SetRowAttr() and SetColAttr() in a straightforward way. A
1111 derived class may use its knowledge about how the attributes are used in
1112 your program to implement it much more efficiently: for example, using a
1113 special background colour for all even-numbered rows can be implemented by
1114 simply returning the same attribute from GetAttr() if the row number is
1115 even instead of having to store N/2 row attributes where N is the total
1116 number of rows in the grid.
1118 Notice that objects of this class can't be copied.
1120 class wxGridCellAttrProvider
: public wxClientDataContainer
1123 /// Trivial default constructor.
1124 wxGridCellAttrProvider();
1126 /// Destructor releases any attributes held by this class.
1127 virtual ~wxGridCellAttrProvider();
1130 Get the attribute to use for the specified cell.
1132 If wxGridCellAttr::Any is used as @a kind value, this function combines
1133 the attributes set for this cell using SetAttr() and those for its row
1134 or column (set with SetRowAttr() or SetColAttr() respectively), with
1135 the cell attribute having the highest precedence.
1137 Notice that the caller must call DecRef() on the returned pointer if it
1141 The row of the cell.
1143 The column of the cell.
1145 The kind of the attribute to return.
1147 The attribute to use which should be DecRef()'d by caller or @NULL
1148 if no attributes are defined for this cell.
1150 virtual wxGridCellAttr
*GetAttr(int row
, int col
,
1151 wxGridCellAttr::wxAttrKind kind
) const;
1156 All these functions take ownership of the attribute passed to them,
1157 i.e. will call DecRef() on it themselves later and so it should not be
1158 destroyed by the caller. And the attribute can be @NULL to reset a
1159 previously set value.
1163 /// Set attribute for the specified cell.
1164 virtual void SetAttr(wxGridCellAttr
*attr
, int row
, int col
);
1166 /// Set attribute for the specified row.
1167 virtual void SetRowAttr(wxGridCellAttr
*attr
, int row
);
1169 /// Set attribute for the specified column.
1170 virtual void SetColAttr(wxGridCellAttr
*attr
, int col
);
1175 Getting header renderers.
1177 These functions return the renderers for the given row or column header
1178 label and the corner window. Unlike cell attributes, these objects are
1179 not reference counted and are never @NULL so they are returned by
1180 reference and not pointer and DecRef() shouldn't (and can't) be called
1183 All these functions were added in wxWidgets 2.9.1.
1188 Return the renderer used for drawing column headers.
1190 By default wxGridColumnHeaderRendererDefault is returned.
1192 @see wxGrid::SetUseNativeColLabels(), wxGrid::UseNativeColHeader()
1196 virtual const wxGridColumnHeaderRenderer
& GetColumnHeaderRenderer(int col
);
1199 Return the renderer used for drawing row headers.
1201 By default wxGridRowHeaderRendererDefault is returned.
1205 virtual const wxGridRowHeaderRenderer
& GetRowHeaderRenderer(int row
);
1208 Return the renderer used for drawing the corner window.
1210 By default wxGridCornerHeaderRendererDefault is returned.
1214 virtual const wxGridCornerHeaderRenderer
& GetCornerRenderer();
1220 Represents coordinates of a grid cell.
1222 An object of this class is simply a (row, column) pair.
1224 class wxGridCellCoords
1228 Default constructor initializes the object to invalid state.
1230 Initially the row and column are both invalid (-1) and so operator!()
1231 for an uninitialized wxGridCellCoords returns false.
1236 Constructor taking a row and a column.
1238 wxGridCellCoords(int row
, int col
);
1241 Return the row of the coordinate.
1246 Set the row of the coordinate.
1251 Return the column of the coordinate.
1256 Set the column of the coordinate.
1261 Set the row and column of the coordinate.
1263 void Set(int row
, int col
);
1266 Assignment operator for coordinate types.
1268 wxGridCellCoords
& operator=(const wxGridCellCoords
& other
);
1273 bool operator==(const wxGridCellCoords
& other
) const;
1276 Inequality operator.
1278 bool operator!=(const wxGridCellCoords
& other
) const;
1281 Checks whether the coordinates are invalid.
1283 Returns false only if both row and column are -1. Notice that if either
1284 row or column (but not both) are -1, this method returns true even if
1285 the object is invalid. This is done because objects in such state
1286 should actually never exist, i.e. either both coordinates should be -1
1287 or none of them should be -1.
1289 bool operator!() const;
1293 @class wxGridTableBase
1295 The almost abstract base class for grid tables.
1297 A grid table is responsible for storing the grid data and, indirectly, grid
1298 cell attributes. The data can be stored in the way most convenient for the
1299 application but has to be provided in string form to wxGrid. It is also
1300 possible to provide cells values in other formats if appropriate, e.g. as
1303 This base class is not quite abstract as it implements a trivial strategy
1304 for storing the attributes by forwarding it to wxGridCellAttrProvider and
1305 also provides stubs for some other functions. However it does have a number
1306 of pure virtual methods which must be implemented in the derived classes.
1308 @see wxGridStringTable
1313 class wxGridTableBase
: public wxObject
1317 Default constructor.
1322 Destructor frees the attribute provider if it was created.
1324 virtual ~wxGridTableBase();
1327 Must be overridden to return the number of rows in the table.
1329 For backwards compatibility reasons, this method is not const.
1330 Use GetRowsCount() instead of it in const methods of derived table
1333 virtual int GetNumberRows() = 0;
1336 Must be overridden to return the number of columns in the table.
1338 For backwards compatibility reasons, this method is not const.
1339 Use GetColsCount() instead of it in const methods of derived table
1342 virtual int GetNumberCols() = 0;
1345 Return the number of rows in the table.
1347 This method is not virtual and is only provided as a convenience for
1348 the derived classes which can't call GetNumberRows() without a
1349 @c const_cast from their const methods.
1351 int GetRowsCount() const;
1354 Return the number of columns in the table.
1356 This method is not virtual and is only provided as a convenience for
1357 the derived classes which can't call GetNumberCols() without a
1358 @c const_cast from their const methods.
1360 int GetColsCount() const;
1364 @name Table Cell Accessors
1369 May be overridden to implement testing for empty cells.
1371 This method is used by the grid to test if the given cell is not used
1372 and so whether a neighbouring cell may overflow into it. By default it
1373 only returns true if the value of the given cell, as returned by
1374 GetValue(), is empty.
1376 virtual bool IsEmptyCell(int row
, int col
);
1379 Same as IsEmptyCell() but taking wxGridCellCoords.
1381 Notice that this method is not virtual, only IsEmptyCell() should be
1384 bool IsEmpty(const wxGridCellCoords
& coords
);
1387 Must be overridden to implement accessing the table values as text.
1389 virtual wxString
GetValue(int row
, int col
) = 0;
1392 Must be overridden to implement setting the table values as text.
1394 virtual void SetValue(int row
, int col
, const wxString
& value
) = 0;
1397 Returns the type of the value in the given cell.
1399 By default all cells are strings and this method returns
1400 @c wxGRID_VALUE_STRING.
1402 virtual wxString
GetTypeName(int row
, int col
);
1405 Returns true if the value of the given cell can be accessed as if it
1406 were of the specified type.
1408 By default the cells can only be accessed as strings. Note that a cell
1409 could be accessible in different ways, e.g. a numeric cell may return
1410 @true for @c wxGRID_VALUE_NUMBER but also for @c wxGRID_VALUE_STRING
1411 indicating that the value can be coerced to a string form.
1413 virtual bool CanGetValueAs(int row
, int col
, const wxString
& typeName
);
1416 Returns true if the value of the given cell can be set as if it were of
1419 @see CanGetValueAs()
1421 virtual bool CanSetValueAs(int row
, int col
, const wxString
& typeName
);
1424 Returns the value of the given cell as a long.
1426 This should only be called if CanGetValueAs() returns @true when called
1427 with @c wxGRID_VALUE_NUMBER argument. Default implementation always
1430 virtual long GetValueAsLong(int row
, int col
);
1433 Returns the value of the given cell as a double.
1435 This should only be called if CanGetValueAs() returns @true when called
1436 with @c wxGRID_VALUE_FLOAT argument. Default implementation always
1439 virtual double GetValueAsDouble(int row
, int col
);
1442 Returns the value of the given cell as a boolean.
1444 This should only be called if CanGetValueAs() returns @true when called
1445 with @c wxGRID_VALUE_BOOL argument. Default implementation always
1448 virtual bool GetValueAsBool(int row
, int col
);
1451 Returns the value of the given cell as a user-defined type.
1453 This should only be called if CanGetValueAs() returns @true when called
1454 with @a typeName. Default implementation always return @NULL.
1456 virtual void *GetValueAsCustom(int row
, int col
, const wxString
& typeName
);
1459 Sets the value of the given cell as a long.
1461 This should only be called if CanSetValueAs() returns @true when called
1462 with @c wxGRID_VALUE_NUMBER argument. Default implementation doesn't do
1465 virtual void SetValueAsLong(int row
, int col
, long value
);
1468 Sets the value of the given cell as a double.
1470 This should only be called if CanSetValueAs() returns @true when called
1471 with @c wxGRID_VALUE_FLOAT argument. Default implementation doesn't do
1474 virtual void SetValueAsDouble(int row
, int col
, double value
);
1477 Sets the value of the given cell as a boolean.
1479 This should only be called if CanSetValueAs() returns @true when called
1480 with @c wxGRID_VALUE_BOOL argument. Default implementation doesn't do
1483 virtual void SetValueAsBool( int row
, int col
, bool value
);
1486 Sets the value of the given cell as a user-defined type.
1488 This should only be called if CanSetValueAs() returns @true when called
1489 with @a typeName. Default implementation doesn't do anything.
1491 virtual void SetValueAsCustom(int row
, int col
, const wxString
& typeName
,
1498 Called by the grid when the table is associated with it.
1500 The default implementation stores the pointer and returns it from its
1501 GetView() and so only makes sense if the table cannot be associated
1502 with more than one grid at a time.
1504 virtual void SetView(wxGrid
*grid
);
1507 Returns the last grid passed to SetView().
1509 virtual wxGrid
*GetView() const;
1513 @name Table Structure Modifiers
1515 Notice that none of these functions are pure virtual as they don't have
1516 to be implemented if the table structure is never modified after
1517 creation, i.e. neither rows nor columns are never added or deleted but
1518 that you do need to implement them if they are called, i.e. if your
1519 code either calls them directly or uses the matching wxGrid methods, as
1520 by default they simply do nothing which is definitely inappropriate.
1525 Clear the table contents.
1527 This method is used by wxGrid::ClearGrid().
1529 virtual void Clear();
1532 Insert additional rows into the table.
1535 The position of the first new row.
1537 The number of rows to insert.
1539 virtual bool InsertRows(size_t pos
= 0, size_t numRows
= 1);
1542 Append additional rows at the end of the table.
1544 This method is provided in addition to InsertRows() as some data models
1545 may only support appending rows to them but not inserting them at
1546 arbitrary locations. In such case you may implement this method only
1547 and leave InsertRows() unimplemented.
1550 The number of rows to add.
1552 virtual bool AppendRows(size_t numRows
= 1);
1555 Delete rows from the table.
1557 Notice that currently deleting a row intersecting a multi-cell (see
1558 SetCellSize()) is not supported and will result in a crash.
1561 The first row to delete.
1563 The number of rows to delete.
1565 virtual bool DeleteRows(size_t pos
= 0, size_t numRows
= 1);
1568 Exactly the same as InsertRows() but for columns.
1570 virtual bool InsertCols(size_t pos
= 0, size_t numCols
= 1);
1573 Exactly the same as AppendRows() but for columns.
1575 virtual bool AppendCols(size_t numCols
= 1);
1578 Exactly the same as DeleteRows() but for columns.
1580 virtual bool DeleteCols(size_t pos
= 0, size_t numCols
= 1);
1585 @name Table Row and Column Labels
1587 By default the numbers are used for labeling rows and Latin letters for
1588 labeling columns. If the table has more than 26 columns, the pairs of
1589 letters are used starting from the 27-th one and so on, i.e. the
1590 sequence of labels is A, B, ..., Z, AA, AB, ..., AZ, BA, ..., ..., ZZ,
1596 Return the label of the specified row.
1598 virtual wxString
GetRowLabelValue(int row
);
1601 Return the label of the specified column.
1603 virtual wxString
GetColLabelValue(int col
);
1606 Set the given label for the specified row.
1608 The default version does nothing, i.e. the label is not stored. You
1609 must override this method in your derived class if you wish
1610 wxGrid::SetRowLabelValue() to work.
1612 virtual void SetRowLabelValue(int row
, const wxString
& label
);
1615 Exactly the same as SetRowLabelValue() but for columns.
1617 virtual void SetColLabelValue(int col
, const wxString
& label
);
1623 @name Attributes Management
1625 By default the attributes management is delegated to
1626 wxGridCellAttrProvider class. You may override the methods in this
1627 section to handle the attributes directly if, for example, they can be
1628 computed from the cell values.
1633 Associate this attributes provider with the table.
1635 The table takes ownership of @a attrProvider pointer and will delete it
1636 when it doesn't need it any more. The pointer can be @NULL, however
1637 this won't disable attributes management in the table but will just
1638 result in a default attributes being recreated the next time any of the
1639 other functions in this section is called. To completely disable the
1640 attributes support, should this be needed, you need to override
1641 CanHaveAttributes() to return @false.
1643 void SetAttrProvider(wxGridCellAttrProvider
*attrProvider
);
1646 Returns the attribute provider currently being used.
1648 This function may return @NULL if the attribute provider hasn't been
1649 neither associated with this table by SetAttrProvider() nor created on
1650 demand by any other methods.
1652 wxGridCellAttrProvider
*GetAttrProvider() const;
1655 Return the attribute for the given cell.
1657 By default this function is simply forwarded to
1658 wxGridCellAttrProvider::GetAttr() but it may be overridden to handle
1659 attributes directly in the table.
1661 virtual wxGridCellAttr
*GetAttr(int row
, int col
,
1662 wxGridCellAttr::wxAttrKind kind
);
1665 Set attribute of the specified cell.
1667 By default this function is simply forwarded to
1668 wxGridCellAttrProvider::SetAttr().
1670 The table takes ownership of @a attr, i.e. will call DecRef() on it.
1672 virtual void SetAttr(wxGridCellAttr
* attr
, int row
, int col
);
1675 Set attribute of the specified row.
1677 By default this function is simply forwarded to
1678 wxGridCellAttrProvider::SetRowAttr().
1680 The table takes ownership of @a attr, i.e. will call DecRef() on it.
1682 virtual void SetRowAttr(wxGridCellAttr
*attr
, int row
);
1685 Set attribute of the specified column.
1687 By default this function is simply forwarded to
1688 wxGridCellAttrProvider::SetColAttr().
1690 The table takes ownership of @a attr, i.e. will call DecRef() on it.
1692 virtual void SetColAttr(wxGridCellAttr
*attr
, int col
);
1697 Returns true if this table supports attributes or false otherwise.
1699 By default, the table automatically creates a wxGridCellAttrProvider
1700 when this function is called if it had no attribute provider before and
1703 virtual bool CanHaveAttributes();
1708 enum wxGridTableRequest
1710 wxGRIDTABLE_REQUEST_VIEW_GET_VALUES
= 2000,
1711 wxGRIDTABLE_REQUEST_VIEW_SEND_VALUES
,
1712 wxGRIDTABLE_NOTIFY_ROWS_INSERTED
,
1713 wxGRIDTABLE_NOTIFY_ROWS_APPENDED
,
1714 wxGRIDTABLE_NOTIFY_ROWS_DELETED
,
1715 wxGRIDTABLE_NOTIFY_COLS_INSERTED
,
1716 wxGRIDTABLE_NOTIFY_COLS_APPENDED
,
1717 wxGRIDTABLE_NOTIFY_COLS_DELETED
1722 @class wxGridTableMessage
1724 A simple class used to pass messages from the table to the grid.
1729 class wxGridTableMessage
1732 wxGridTableMessage();
1733 wxGridTableMessage( wxGridTableBase
*table
, int id
,
1737 void SetTableObject( wxGridTableBase
*table
);
1738 wxGridTableBase
* GetTableObject() const;
1739 void SetId( int id
);
1741 void SetCommandInt( int comInt1
);
1742 int GetCommandInt();
1743 void SetCommandInt2( int comInt2
);
1744 int GetCommandInt2();
1750 @class wxGridStringTable
1752 Simplest type of data table for a grid for small tables of strings
1753 that are stored in memory
1755 class wxGridStringTable
: public wxGridTableBase
1758 wxGridStringTable();
1759 wxGridStringTable( int numRows
, int numCols
);
1761 // these are pure virtual in wxGridTableBase
1762 virtual int GetNumberRows();
1763 virtual int GetNumberCols();
1764 virtual wxString
GetValue( int row
, int col
);
1765 virtual void SetValue( int row
, int col
, const wxString
& value
);
1767 // overridden functions from wxGridTableBase
1769 bool InsertRows( size_t pos
= 0, size_t numRows
= 1 );
1770 bool AppendRows( size_t numRows
= 1 );
1771 bool DeleteRows( size_t pos
= 0, size_t numRows
= 1 );
1772 bool InsertCols( size_t pos
= 0, size_t numCols
= 1 );
1773 bool AppendCols( size_t numCols
= 1 );
1774 bool DeleteCols( size_t pos
= 0, size_t numCols
= 1 );
1776 void SetRowLabelValue( int row
, const wxString
& );
1777 void SetColLabelValue( int col
, const wxString
& );
1778 wxString
GetRowLabelValue( int row
);
1779 wxString
GetColLabelValue( int col
);
1788 @class wxGridSizesInfo
1790 wxGridSizesInfo stores information about sizes of all wxGrid rows or
1793 It assumes that most of the rows or columns (which are both called elements
1794 here as the difference between them doesn't matter at this class level)
1795 have the default size and so stores it separately. And it uses a wxHashMap
1796 to store the sizes of all elements which have the non-default size.
1798 This structure is particularly useful for serializing the sizes of all
1799 wxGrid elements at once.
1804 struct wxGridSizesInfo
1807 Default constructor.
1809 m_sizeDefault and m_customSizes must be initialized later.
1816 This constructor is used by wxGrid::GetRowSizes() and GetColSizes()
1817 methods. User code will usually use the default constructor instead.
1820 The default element size.
1822 Array containing the sizes of @em all elements, including those
1823 which have the default size.
1825 wxGridSizesInfo(int defSize
, const wxArrayInt
& allSizes
);
1828 Get the element size.
1831 The index of the element.
1833 The size for this element, using m_customSizes if @a pos is in it
1834 or m_sizeDefault otherwise.
1836 int GetSize(unsigned pos
) const;
1843 Map with element indices as keys and their sizes as values.
1845 This map only contains the elements with non-default size.
1847 wxUnsignedToIntHashMap m_customSizes
;
1853 Rendering styles supported by wxGrid::Render() method.
1857 enum wxGridRenderStyle
1859 /// Draw grid row header labels.
1860 wxGRID_DRAW_ROWS_HEADER
= 0x001,
1862 /// Draw grid column header labels.
1863 wxGRID_DRAW_COLS_HEADER
= 0x002,
1865 /// Draw grid cell border lines.
1866 wxGRID_DRAW_CELL_LINES
= 0x004,
1869 Draw a bounding rectangle around the rendered cell area.
1871 Useful where row or column headers are not drawn or where there is
1872 multi row or column cell clipping and therefore no cell border at
1873 the rendered outer boundary.
1875 wxGRID_DRAW_BOX_RECT
= 0x008,
1878 Draw the grid cell selection highlight if a selection is present.
1880 At present the highlight colour drawn depends on whether the grid
1881 window loses focus before drawing begins.
1883 wxGRID_DRAW_SELECTION
= 0x010,
1886 The default render style.
1888 Includes all except wxGRID_DRAW_SELECTION.
1890 wxGRID_DRAW_DEFAULT
= wxGRID_DRAW_ROWS_HEADER
|
1891 wxGRID_DRAW_COLS_HEADER
|
1892 wxGRID_DRAW_CELL_LINES
|
1893 wxGRID_DRAW_BOX_RECT
1901 wxGrid and its related classes are used for displaying and editing tabular
1902 data. They provide a rich set of features for display, editing, and
1903 interacting with a variety of data sources. For simple applications, and to
1904 help you get started, wxGrid is the only class you need to refer to
1905 directly. It will set up default instances of the other classes and manage
1906 them for you. For more complex applications you can derive your own classes
1907 for custom grid views, grid data tables, cell editors and renderers. The
1908 @ref overview_grid has examples of simple and more complex applications,
1909 explains the relationship between the various grid classes and has a
1910 summary of the keyboard shortcuts and mouse functions provided by wxGrid.
1912 A wxGridTableBase class holds the actual data to be displayed by a wxGrid
1913 class. One or more wxGrid classes may act as a view for one table class.
1914 The default table class is called wxGridStringTable and holds an array of
1915 strings. An instance of such a class is created by CreateGrid().
1917 wxGridCellRenderer is the abstract base class for rendering contents in a
1918 cell. The following renderers are predefined:
1920 - wxGridCellBoolRenderer
1921 - wxGridCellFloatRenderer
1922 - wxGridCellNumberRenderer
1923 - wxGridCellStringRenderer
1925 The look of a cell can be further defined using wxGridCellAttr. An object
1926 of this type may be returned by wxGridTableBase::GetAttr().
1928 wxGridCellEditor is the abstract base class for editing the value of a
1929 cell. The following editors are predefined:
1931 - wxGridCellBoolEditor
1932 - wxGridCellChoiceEditor
1933 - wxGridCellFloatEditor
1934 - wxGridCellNumberEditor
1935 - wxGridCellTextEditor
1937 Please see wxGridEvent, wxGridSizeEvent, wxGridRangeSelectEvent, and
1938 wxGridEditorCreatedEvent for the documentation of all event types you can
1944 @see @ref overview_grid, wxGridUpdateLocker
1946 class wxGrid
: public wxScrolledWindow
1951 Different selection modes supported by the grid.
1953 enum wxGridSelectionModes
1956 The default selection mode allowing selection of the individual
1957 cells as well as of the entire rows and columns.
1962 The selection mode allowing the selection of the entire rows only.
1964 The user won't be able to select any cells or columns in this mode.
1969 The selection mode allowing the selection of the entire columns only.
1971 The user won't be able to select any cells or rows in this mode.
1973 wxGridSelectColumns
,
1976 The selection mode allowing the user to select either the entire
1977 columns or the entire rows but not individual cells nor blocks.
1979 Notice that while this constant is defined as @code
1980 wxGridSelectColumns | wxGridSelectRows @endcode this doesn't mean
1981 that all the other combinations are valid -- at least currently
1986 wxGridSelectRowsOrColumns
1990 Return values for GetCellSize().
1996 /// This cell is inside a span covered by another cell.
1997 CellSpan_Inside
= -1,
1999 /// This is a normal, non-spanning cell.
2002 /// This cell spans several physical wxGrid cells.
2007 Constants defining different support built-in TAB handling behaviours.
2009 The elements of this enum determine what happens when TAB is pressed
2010 when the cursor is in the rightmost column (or Shift-TAB is pressed
2011 when the cursor is in the leftmost one).
2013 @see SetTabBehaviour(), @c wxEVT_GRID_TABBING
2019 /// Do nothing, this is default.
2022 /// Move to the beginning of the next (or the end of the previous) row.
2025 /// Move to the next (or the previous) control after the grid.
2030 @name Constructors and Initialization
2035 Default constructor.
2037 You must call Create() to really create the grid window and also call
2038 CreateGrid() or SetTable() to initialize the grid contents.
2042 Constructor creating the grid window.
2044 You must call either CreateGrid() or SetTable() to initialize the grid
2045 contents before using it.
2047 wxGrid(wxWindow
* parent
, wxWindowID id
,
2048 const wxPoint
& pos
= wxDefaultPosition
,
2049 const wxSize
& size
= wxDefaultSize
,
2050 long style
= wxWANTS_CHARS
,
2051 const wxString
& name
= wxGridNameStr
);
2056 This will also destroy the associated grid table unless you passed a
2057 table object to the grid and specified that the grid should not take
2058 ownership of the table (see SetTable()).
2063 Creates the grid window for an object initialized using the default
2066 You must call either CreateGrid() or SetTable() to initialize the grid
2067 contents before using it.
2069 bool Create(wxWindow
* parent
, wxWindowID id
,
2070 const wxPoint
& pos
= wxDefaultPosition
,
2071 const wxSize
& size
= wxDefaultSize
,
2072 long style
= wxWANTS_CHARS
,
2073 const wxString
& name
= wxGridNameStr
);
2076 Creates a grid with the specified initial number of rows and columns.
2078 Call this directly after the grid constructor. When you use this
2079 function wxGrid will create and manage a simple table of string values
2080 for you. All of the grid data will be stored in memory.
2082 For applications with more complex data types or relationships, or for
2083 dealing with very large datasets, you should derive your own grid table
2084 class and pass a table object to the grid with SetTable().
2086 bool CreateGrid(int numRows
, int numCols
,
2087 wxGridSelectionModes selmode
= wxGridSelectCells
);
2090 Passes a pointer to a custom grid table to be used by the grid.
2092 This should be called after the grid constructor and before using the
2093 grid object. If @a takeOwnership is set to @true then the table will be
2094 deleted by the wxGrid destructor.
2096 Use this function instead of CreateGrid() when your application
2097 involves complex or non-string data or data sets that are too large to
2098 fit wholly in memory.
2100 bool SetTable(wxGridTableBase
* table
, bool takeOwnership
= false,
2101 wxGridSelectionModes selmode
= wxGridSelectCells
);
2104 Receive and handle a message from the table.
2106 bool ProcessTableMessage(wxGridTableMessage
& msg
);
2112 @name Grid Line Formatting
2117 Turns the drawing of grid lines on or off.
2119 void EnableGridLines(bool enable
= true);
2122 Returns the pen used for vertical grid lines.
2124 This virtual function may be overridden in derived classes in order to
2125 change the appearance of individual grid lines for the given column
2128 See GetRowGridLinePen() for an example.
2130 virtual wxPen
GetColGridLinePen(int col
);
2133 Returns the pen used for grid lines.
2135 This virtual function may be overridden in derived classes in order to
2136 change the appearance of grid lines. Note that currently the pen width
2139 @see GetColGridLinePen(), GetRowGridLinePen()
2141 virtual wxPen
GetDefaultGridLinePen();
2144 Returns the colour used for grid lines.
2146 @see GetDefaultGridLinePen()
2148 wxColour
GetGridLineColour() const;
2151 Returns the pen used for horizontal grid lines.
2153 This virtual function may be overridden in derived classes in order to
2154 change the appearance of individual grid line for the given @a row.
2158 // in a grid displaying music notation, use a solid black pen between
2159 // octaves (C0=row 127, C1=row 115 etc.)
2160 wxPen MidiGrid::GetRowGridLinePen(int row)
2162 if ( row % 12 == 7 )
2163 return wxPen(*wxBLACK, 1, wxSOLID);
2165 return GetDefaultGridLinePen();
2169 virtual wxPen
GetRowGridLinePen(int row
);
2172 Returns @true if drawing of grid lines is turned on, @false otherwise.
2174 bool GridLinesEnabled() const;
2177 Sets the colour used to draw grid lines.
2179 void SetGridLineColour(const wxColour
& colour
);
2185 @name Label Values and Formatting
2190 Sets the arguments to the current column label alignment values.
2192 Horizontal alignment will be one of @c wxALIGN_LEFT, @c wxALIGN_CENTRE
2193 or @c wxALIGN_RIGHT.
2195 Vertical alignment will be one of @c wxALIGN_TOP, @c wxALIGN_CENTRE or
2198 void GetColLabelAlignment(int* horiz
, int* vert
) const;
2201 Returns the orientation of the column labels (either @c wxHORIZONTAL or
2204 int GetColLabelTextOrientation() const;
2207 Returns the specified column label.
2209 The default grid table class provides column labels of the form
2210 A,B...Z,AA,AB...ZZ,AAA... If you are using a custom grid table you can
2211 override wxGridTableBase::GetColLabelValue() to provide your own
2214 wxString
GetColLabelValue(int col
) const;
2217 Returns the colour used for the background of row and column labels.
2219 wxColour
GetLabelBackgroundColour() const;
2222 Returns the font used for row and column labels.
2224 wxFont
GetLabelFont() const;
2227 Returns the colour used for row and column label text.
2229 wxColour
GetLabelTextColour() const;
2232 Returns the alignment used for row labels.
2234 Horizontal alignment will be one of @c wxALIGN_LEFT, @c wxALIGN_CENTRE
2235 or @c wxALIGN_RIGHT.
2237 Vertical alignment will be one of @c wxALIGN_TOP, @c wxALIGN_CENTRE or
2240 void GetRowLabelAlignment(int* horiz
, int* vert
) const;
2243 Returns the specified row label.
2245 The default grid table class provides numeric row labels. If you are
2246 using a custom grid table you can override
2247 wxGridTableBase::GetRowLabelValue() to provide your own labels.
2249 wxString
GetRowLabelValue(int row
) const;
2252 Hides the column labels by calling SetColLabelSize() with a size of 0.
2253 Show labels again by calling that method with a width greater than 0.
2255 void HideColLabels();
2258 Hides the row labels by calling SetRowLabelSize() with a size of 0.
2260 The labels can be shown again by calling SetRowLabelSize() with a width
2263 void HideRowLabels();
2266 Sets the horizontal and vertical alignment of column label text.
2268 Horizontal alignment should be one of @c wxALIGN_LEFT,
2269 @c wxALIGN_CENTRE or @c wxALIGN_RIGHT. Vertical alignment should be one
2270 of @c wxALIGN_TOP, @c wxALIGN_CENTRE or @c wxALIGN_BOTTOM.
2272 void SetColLabelAlignment(int horiz
, int vert
);
2275 Sets the orientation of the column labels (either @c wxHORIZONTAL or
2278 void SetColLabelTextOrientation(int textOrientation
);
2281 Set the value for the given column label.
2283 If you are using a custom grid table you must override
2284 wxGridTableBase::SetColLabelValue() for this to have any effect.
2286 void SetColLabelValue(int col
, const wxString
& value
);
2289 Sets the background colour for row and column labels.
2291 void SetLabelBackgroundColour(const wxColour
& colour
);
2294 Sets the font for row and column labels.
2296 void SetLabelFont(const wxFont
& font
);
2299 Sets the colour for row and column label text.
2301 void SetLabelTextColour(const wxColour
& colour
);
2304 Sets the horizontal and vertical alignment of row label text.
2306 Horizontal alignment should be one of @c wxALIGN_LEFT,
2307 @c wxALIGN_CENTRE or @c wxALIGN_RIGHT. Vertical alignment should be one
2308 of @c wxALIGN_TOP, @c wxALIGN_CENTRE or @c wxALIGN_BOTTOM.
2310 void SetRowLabelAlignment(int horiz
, int vert
);
2313 Sets the value for the given row label.
2315 If you are using a derived grid table you must override
2316 wxGridTableBase::SetRowLabelValue() for this to have any effect.
2318 void SetRowLabelValue(int row
, const wxString
& value
);
2321 Call this in order to make the column labels use a native look by using
2322 wxRendererNative::DrawHeaderButton() internally.
2324 There is no equivalent method for drawing row columns as there is not
2325 native look for that. This option is useful when using wxGrid for
2326 displaying tables and not as a spread-sheet.
2328 @see UseNativeColHeader()
2330 void SetUseNativeColLabels(bool native
= true);
2333 Enable the use of native header window for column labels.
2335 If this function is called with @true argument, a wxHeaderCtrl is used
2336 instead to display the column labels instead of drawing them in wxGrid
2337 code itself. This has the advantage of making the grid look and feel
2338 perfectly the same as native applications (using SetUseNativeColLabels()
2339 the grid can be made to look more natively but it still doesn't feel
2340 natively, notably the column resizing and dragging still works slightly
2341 differently as it is implemented in wxWidgets itself) but results in
2342 different behaviour for column and row headers, for which there is no
2343 equivalent function, and, most importantly, is unsuitable for grids
2344 with huge numbers of columns as wxHeaderCtrl doesn't support virtual
2345 mode. Because of this, by default the grid does not use the native
2346 header control but you should call this function to enable it if you
2347 are using the grid to display tabular data and don't have thousands of
2350 Another difference between the default behaviour and the native header
2351 behaviour is that the latter provides the user with a context menu
2352 (which appears on right clicking the header) allowing to rearrange the
2353 grid columns if CanDragColMove() returns @true. If you want to prevent
2354 this from happening for some reason, you need to define a handler for
2355 @c wxEVT_GRID_LABEL_RIGHT_CLICK event which simply does nothing (in
2356 particular doesn't skip the event) as this will prevent the default
2357 right click handling from working.
2359 Also note that currently @c wxEVT_GRID_LABEL_RIGHT_DCLICK event is not
2360 generated for the column labels if the native columns header is used
2361 (but this limitation could possibly be lifted in the future).
2363 void UseNativeColHeader(bool native
= true);
2369 @name Cell Formatting
2371 Note that wxGridCellAttr can be used alternatively to most of these
2372 methods. See the "Attributes Management" of wxGridTableBase.
2377 Sets the arguments to the horizontal and vertical text alignment values
2378 for the grid cell at the specified location.
2380 Horizontal alignment will be one of @c wxALIGN_LEFT, @c wxALIGN_CENTRE
2381 or @c wxALIGN_RIGHT.
2383 Vertical alignment will be one of @c wxALIGN_TOP, @c wxALIGN_CENTRE or
2386 void GetCellAlignment(int row
, int col
, int* horiz
, int* vert
) const;
2389 Returns the background colour of the cell at the specified location.
2391 wxColour
GetCellBackgroundColour(int row
, int col
) const;
2394 Returns the font for text in the grid cell at the specified location.
2396 wxFont
GetCellFont(int row
, int col
) const;
2399 Returns the text colour for the grid cell at the specified location.
2401 wxColour
GetCellTextColour(int row
, int col
) const;
2404 Returns the default cell alignment.
2406 Horizontal alignment will be one of @c wxALIGN_LEFT, @c wxALIGN_CENTRE
2407 or @c wxALIGN_RIGHT.
2409 Vertical alignment will be one of @c wxALIGN_TOP, @c wxALIGN_CENTRE or
2412 @see SetDefaultCellAlignment()
2414 void GetDefaultCellAlignment(int* horiz
, int* vert
) const;
2417 Returns the current default background colour for grid cells.
2419 wxColour
GetDefaultCellBackgroundColour() const;
2422 Returns the current default font for grid cell text.
2424 wxFont
GetDefaultCellFont() const;
2427 Returns the current default colour for grid cell text.
2429 wxColour
GetDefaultCellTextColour() const;
2432 Sets the horizontal and vertical alignment for grid cell text at the
2435 Horizontal alignment should be one of @c wxALIGN_LEFT,
2436 @c wxALIGN_CENTRE or @c wxALIGN_RIGHT.
2438 Vertical alignment should be one of @c wxALIGN_TOP, @c wxALIGN_CENTRE
2439 or @c wxALIGN_BOTTOM.
2441 void SetCellAlignment(int row
, int col
, int horiz
, int vert
);
2443 Sets the horizontal and vertical alignment for grid cell text at the
2446 Horizontal alignment should be one of @c wxALIGN_LEFT,
2447 @c wxALIGN_CENTRE or @c wxALIGN_RIGHT.
2449 Vertical alignment should be one of @c wxALIGN_TOP, @c wxALIGN_CENTRE
2450 or @c wxALIGN_BOTTOM.
2452 void SetCellAlignment(int align
, int row
, int col
);
2455 Set the background colour for the given cell or all cells by default.
2457 void SetCellBackgroundColour(int row
, int col
, const wxColour
& colour
);
2460 Sets the font for text in the grid cell at the specified location.
2462 void SetCellFont(int row
, int col
, const wxFont
& font
);
2465 Sets the text colour for the given cell.
2467 void SetCellTextColour(int row
, int col
, const wxColour
& colour
);
2469 Sets the text colour for the given cell.
2471 void SetCellTextColour(const wxColour
& val
, int row
, int col
);
2473 Sets the text colour for all cells by default.
2475 void SetCellTextColour(const wxColour
& colour
);
2478 Sets the default horizontal and vertical alignment for grid cell text.
2480 Horizontal alignment should be one of @c wxALIGN_LEFT,
2481 @c wxALIGN_CENTRE or @c wxALIGN_RIGHT. Vertical alignment should be one
2482 of @c wxALIGN_TOP, @c wxALIGN_CENTRE or @c wxALIGN_BOTTOM.
2484 void SetDefaultCellAlignment(int horiz
, int vert
);
2487 Sets the default background colour for grid cells.
2489 void SetDefaultCellBackgroundColour(const wxColour
& colour
);
2492 Sets the default font to be used for grid cell text.
2494 void SetDefaultCellFont(const wxFont
& font
);
2497 Sets the current default colour for grid cell text.
2499 void SetDefaultCellTextColour(const wxColour
& colour
);
2505 @name Cell Values, Editors, and Renderers
2507 Note that wxGridCellAttr can be used alternatively to most of these
2508 methods. See the "Attributes Management" of wxGridTableBase.
2513 Returns @true if the in-place edit control for the current grid cell
2514 can be used and @false otherwise.
2516 This function always returns @false for the read-only cells.
2518 bool CanEnableCellControl() const;
2521 Disables in-place editing of grid cells.
2523 Equivalent to calling EnableCellEditControl(@false).
2525 void DisableCellEditControl();
2528 Enables or disables in-place editing of grid cell data.
2530 The grid will issue either a @c wxEVT_GRID_EDITOR_SHOWN or
2531 @c wxEVT_GRID_EDITOR_HIDDEN event.
2533 void EnableCellEditControl(bool enable
= true);
2536 Makes the grid globally editable or read-only.
2538 If the edit argument is @false this function sets the whole grid as
2539 read-only. If the argument is @true the grid is set to the default
2540 state where cells may be editable. In the default state you can set
2541 single grid cells and whole rows and columns to be editable or
2542 read-only via wxGridCellAttr::SetReadOnly(). For single cells you
2543 can also use the shortcut function SetReadOnly().
2545 For more information about controlling grid cell attributes see the
2546 wxGridCellAttr class and the @ref overview_grid.
2548 void EnableEditing(bool edit
);
2551 Returns a pointer to the editor for the cell at the specified location.
2553 See wxGridCellEditor and the @ref overview_grid for more information
2554 about cell editors and renderers.
2556 The caller must call DecRef() on the returned pointer.
2558 wxGridCellEditor
* GetCellEditor(int row
, int col
) const;
2561 Returns a pointer to the renderer for the grid cell at the specified
2564 See wxGridCellRenderer and the @ref overview_grid for more information
2565 about cell editors and renderers.
2567 The caller must call DecRef() on the returned pointer.
2569 wxGridCellRenderer
* GetCellRenderer(int row
, int col
) const;
2572 Returns the string contained in the cell at the specified location.
2574 For simple applications where a grid object automatically uses a
2575 default grid table of string values you use this function together with
2576 SetCellValue() to access cell values. For more complex applications
2577 where you have derived your own grid table class that contains various
2578 data types (e.g. numeric, boolean or user-defined custom types) then
2579 you only use this function for those cells that contain string values.
2581 See wxGridTableBase::CanGetValueAs() and the @ref overview_grid for
2584 wxString
GetCellValue(int row
, int col
) const;
2586 Returns the string contained in the cell at the specified location.
2588 For simple applications where a grid object automatically uses a
2589 default grid table of string values you use this function together with
2590 SetCellValue() to access cell values. For more complex applications
2591 where you have derived your own grid table class that contains various
2592 data types (e.g. numeric, boolean or user-defined custom types) then
2593 you only use this function for those cells that contain string values.
2595 See wxGridTableBase::CanGetValueAs() and the @ref overview_grid for
2598 wxString
GetCellValue(const wxGridCellCoords
& coords
) const;
2601 Returns a pointer to the current default grid cell editor.
2603 See wxGridCellEditor and the @ref overview_grid for more information
2604 about cell editors and renderers.
2606 wxGridCellEditor
* GetDefaultEditor() const;
2609 Returns the default editor for the specified cell.
2611 The base class version returns the editor appropriate for the current
2612 cell type but this method may be overridden in the derived classes to
2613 use custom editors for some cells by default.
2615 Notice that the same may be achieved in a usually simpler way by
2616 associating a custom editor with the given cell or cells.
2618 The caller must call DecRef() on the returned pointer.
2620 virtual wxGridCellEditor
* GetDefaultEditorForCell(int row
, int col
) const;
2622 Returns the default editor for the specified cell.
2624 The base class version returns the editor appropriate for the current
2625 cell type but this method may be overridden in the derived classes to
2626 use custom editors for some cells by default.
2628 Notice that the same may be achieved in a usually simpler way by
2629 associating a custom editor with the given cell or cells.
2631 The caller must call DecRef() on the returned pointer.
2633 wxGridCellEditor
* GetDefaultEditorForCell(const wxGridCellCoords
& c
) const;
2636 Returns the default editor for the cells containing values of the given
2639 The base class version returns the editor which was associated with the
2640 specified @a typeName when it was registered RegisterDataType() but
2641 this function may be overridden to return something different. This
2642 allows to override an editor used for one of the standard types.
2644 The caller must call DecRef() on the returned pointer.
2646 virtual wxGridCellEditor
* GetDefaultEditorForType(const wxString
& typeName
) const;
2649 Returns a pointer to the current default grid cell renderer.
2651 See wxGridCellRenderer and the @ref overview_grid for more information
2652 about cell editors and renderers.
2654 The caller must call DecRef() on the returned pointer.
2656 wxGridCellRenderer
* GetDefaultRenderer() const;
2659 Returns the default renderer for the given cell.
2661 The base class version returns the renderer appropriate for the current
2662 cell type but this method may be overridden in the derived classes to
2663 use custom renderers for some cells by default.
2665 The caller must call DecRef() on the returned pointer.
2667 virtual wxGridCellRenderer
* GetDefaultRendererForCell(int row
, int col
) const;
2670 Returns the default renderer for the cell containing values of the
2673 @see GetDefaultEditorForType()
2675 virtual wxGridCellRenderer
* GetDefaultRendererForType(const wxString
& typeName
) const;
2678 Hides the in-place cell edit control.
2680 void HideCellEditControl();
2683 Returns @true if the in-place edit control is currently enabled.
2685 bool IsCellEditControlEnabled() const;
2688 Returns @true if the current cell is read-only.
2690 @see SetReadOnly(), IsReadOnly()
2692 bool IsCurrentCellReadOnly() const;
2695 Returns @false if the whole grid has been set as read-only or @true
2698 See EnableEditing() for more information about controlling the editing
2699 status of grid cells.
2701 bool IsEditable() const;
2704 Returns @true if the cell at the specified location can't be edited.
2706 @see SetReadOnly(), IsCurrentCellReadOnly()
2708 bool IsReadOnly(int row
, int col
) const;
2711 Register a new data type.
2713 The data types allow to naturally associate specific renderers and
2714 editors to the cells containing values of the given type. For example,
2715 the grid automatically registers a data type with the name
2716 @c wxGRID_VALUE_STRING which uses wxGridCellStringRenderer and
2717 wxGridCellTextEditor as its renderer and editor respectively -- this is
2718 the data type used by all the cells of the default wxGridStringTable,
2719 so this renderer and editor are used by default for all grid cells.
2721 However if a custom table returns @c wxGRID_VALUE_BOOL from its
2722 wxGridTableBase::GetTypeName() method, then wxGridCellBoolRenderer and
2723 wxGridCellBoolEditor are used for it because the grid also registers a
2724 boolean data type with this name.
2726 And as this mechanism is completely generic, you may register your own
2727 data types using your own custom renderers and editors. Just remember
2728 that the table must identify a cell as being of the given type for them
2729 to be used for this cell.
2732 Name of the new type. May be any string, but if the type name is
2733 the same as the name of an already registered type, including one
2734 of the standard ones (which are @c wxGRID_VALUE_STRING, @c
2735 wxGRID_VALUE_BOOL, @c wxGRID_VALUE_NUMBER, @c wxGRID_VALUE_FLOAT
2736 and @c wxGRID_VALUE_CHOICE), then the new registration information
2737 replaces the previously used renderer and editor.
2739 The renderer to use for the cells of this type. Its ownership is
2740 taken by the grid, i.e. it will call DecRef() on this pointer when
2741 it doesn't need it any longer.
2743 The editor to use for the cells of this type. Its ownership is also
2746 void RegisterDataType(const wxString
& typeName
,
2747 wxGridCellRenderer
* renderer
,
2748 wxGridCellEditor
* editor
);
2751 Sets the value of the current grid cell to the current in-place edit
2754 This is called automatically when the grid cursor moves from the
2755 current cell to a new cell. It is also a good idea to call this
2756 function when closing a grid since any edits to the final cell location
2757 will not be saved otherwise.
2759 void SaveEditControlValue();
2762 Sets the editor for the grid cell at the specified location.
2764 The grid will take ownership of the pointer.
2766 See wxGridCellEditor and the @ref overview_grid for more information
2767 about cell editors and renderers.
2769 void SetCellEditor(int row
, int col
, wxGridCellEditor
* editor
);
2772 Sets the renderer for the grid cell at the specified location.
2774 The grid will take ownership of the pointer.
2776 See wxGridCellRenderer and the @ref overview_grid for more information
2777 about cell editors and renderers.
2779 void SetCellRenderer(int row
, int col
, wxGridCellRenderer
* renderer
);
2782 Sets the string value for the cell at the specified location.
2784 For simple applications where a grid object automatically uses a
2785 default grid table of string values you use this function together with
2786 GetCellValue() to access cell values. For more complex applications
2787 where you have derived your own grid table class that contains various
2788 data types (e.g. numeric, boolean or user-defined custom types) then
2789 you only use this function for those cells that contain string values.
2791 See wxGridTableBase::CanSetValueAs() and the @ref overview_grid for
2794 void SetCellValue(int row
, int col
, const wxString
& s
);
2796 Sets the string value for the cell at the specified location.
2798 For simple applications where a grid object automatically uses a
2799 default grid table of string values you use this function together with
2800 GetCellValue() to access cell values. For more complex applications
2801 where you have derived your own grid table class that contains various
2802 data types (e.g. numeric, boolean or user-defined custom types) then
2803 you only use this function for those cells that contain string values.
2805 See wxGridTableBase::CanSetValueAs() and the @ref overview_grid for
2808 void SetCellValue(const wxGridCellCoords
& coords
, const wxString
& s
);
2810 @deprecated Please use SetCellValue(int,int,const wxString&) or
2811 SetCellValue(const wxGridCellCoords&,const wxString&)
2814 Sets the string value for the cell at the specified location.
2816 For simple applications where a grid object automatically uses a
2817 default grid table of string values you use this function together with
2818 GetCellValue() to access cell values. For more complex applications
2819 where you have derived your own grid table class that contains various
2820 data types (e.g. numeric, boolean or user-defined custom types) then
2821 you only use this function for those cells that contain string values.
2823 See wxGridTableBase::CanSetValueAs() and the @ref overview_grid for
2826 void SetCellValue(const wxString
& val
, int row
, int col
);
2829 Sets the specified column to display boolean values.
2831 @see SetColFormatCustom()
2833 void SetColFormatBool(int col
);
2836 Sets the specified column to display data in a custom format.
2838 This method provides an alternative to defining a custom grid table
2839 which would return @a typeName from its GetTypeName() method for the
2840 cells in this column: while it doesn't really change the type of the
2841 cells in this column, it does associate the renderer and editor used
2842 for the cells of the specified type with them.
2844 See the @ref overview_grid for more information on working with custom
2847 void SetColFormatCustom(int col
, const wxString
& typeName
);
2850 Sets the specified column to display floating point values with the
2851 given width and precision.
2853 @see SetColFormatCustom()
2855 void SetColFormatFloat(int col
, int width
= -1, int precision
= -1);
2858 Sets the specified column to display integer values.
2860 @see SetColFormatCustom()
2862 void SetColFormatNumber(int col
);
2865 Sets the default editor for grid cells.
2867 The grid will take ownership of the pointer.
2869 See wxGridCellEditor and the @ref overview_grid for more information
2870 about cell editors and renderers.
2872 void SetDefaultEditor(wxGridCellEditor
* editor
);
2875 Sets the default renderer for grid cells.
2877 The grid will take ownership of the pointer.
2879 See wxGridCellRenderer and the @ref overview_grid for more information
2880 about cell editors and renderers.
2882 void SetDefaultRenderer(wxGridCellRenderer
* renderer
);
2885 Makes the cell at the specified location read-only or editable.
2889 void SetReadOnly(int row
, int col
, bool isReadOnly
= true);
2892 Displays the in-place cell edit control for the current cell.
2894 void ShowCellEditControl();
2900 @name Column and Row Sizes
2902 @see @ref overview_grid_resizing
2907 Automatically sets the height and width of all rows and columns to fit
2913 Automatically adjusts width of the column to fit its label.
2915 void AutoSizeColLabelSize(int col
);
2918 Automatically sizes the column to fit its contents. If @a setAsMin is
2919 @true the calculated width will also be set as the minimal width for
2922 void AutoSizeColumn(int col
, bool setAsMin
= true);
2925 Automatically sizes all columns to fit their contents. If @a setAsMin
2926 is @true the calculated widths will also be set as the minimal widths
2929 void AutoSizeColumns(bool setAsMin
= true);
2932 Automatically sizes the row to fit its contents. If @a setAsMin is
2933 @true the calculated height will also be set as the minimal height for
2936 void AutoSizeRow(int row
, bool setAsMin
= true);
2939 Automatically adjusts height of the row to fit its label.
2941 void AutoSizeRowLabelSize(int col
);
2944 Automatically sizes all rows to fit their contents. If @a setAsMin is
2945 @true the calculated heights will also be set as the minimal heights
2948 void AutoSizeRows(bool setAsMin
= true);
2951 Returns @true if the cell value can overflow.
2953 A cell can overflow if the next cell in the row is empty.
2955 bool GetCellOverflow(int row
, int col
) const;
2958 Returns the current height of the column labels.
2960 int GetColLabelSize() const;
2963 Returns the minimal width to which a column may be resized.
2965 Use SetColMinimalAcceptableWidth() to change this value globally or
2966 SetColMinimalWidth() to do it for individual columns.
2968 @see GetRowMinimalAcceptableHeight()
2970 int GetColMinimalAcceptableWidth() const;
2973 Returns the width of the specified column.
2975 int GetColSize(int col
) const;
2978 Returns @true if the specified column is not currently hidden.
2980 bool IsColShown(int col
) const;
2983 Returns @true if the cells can overflow by default.
2985 bool GetDefaultCellOverflow() const;
2988 Returns the default height for column labels.
2990 int GetDefaultColLabelSize() const;
2993 Returns the current default width for grid columns.
2995 int GetDefaultColSize() const;
2998 Returns the default width for the row labels.
3000 int GetDefaultRowLabelSize() const;
3003 Returns the current default height for grid rows.
3005 int GetDefaultRowSize() const;
3008 Returns the minimal size to which rows can be resized.
3010 Use SetRowMinimalAcceptableHeight() to change this value globally or
3011 SetRowMinimalHeight() to do it for individual cells.
3013 @see GetColMinimalAcceptableWidth()
3015 int GetRowMinimalAcceptableHeight() const;
3018 Returns the current width of the row labels.
3020 int GetRowLabelSize() const;
3023 Returns the height of the specified row.
3025 int GetRowSize(int row
) const;
3028 Returns @true if the specified row is not currently hidden.
3030 bool IsRowShown(int row
) const;
3033 Sets the overflow permission of the cell.
3035 void SetCellOverflow(int row
, int col
, bool allow
);
3038 Sets the height of the column labels.
3040 If @a height equals to @c wxGRID_AUTOSIZE then height is calculated
3041 automatically so that no label is truncated. Note that this could be
3042 slow for a large table.
3044 void SetColLabelSize(int height
);
3047 Sets the minimal @a width to which the user can resize columns.
3049 @see GetColMinimalAcceptableWidth()
3051 void SetColMinimalAcceptableWidth(int width
);
3054 Sets the minimal @a width for the specified column @a col.
3056 It is usually best to call this method during grid creation as calling
3057 it later will not resize the column to the given minimal width even if
3058 it is currently narrower than it.
3060 @a width must be greater than the minimal acceptable column width as
3061 returned by GetColMinimalAcceptableWidth().
3063 void SetColMinimalWidth(int col
, int width
);
3066 Sets the width of the specified column.
3071 The new column width in pixels, 0 to hide the column or -1 to fit
3072 the column width to its label width.
3074 void SetColSize(int col
, int width
);
3077 Hides the specified column.
3079 To show the column later you need to call SetColSize() with non-0
3080 width or ShowCol() to restore the previous column width.
3082 If the column is already hidden, this method doesn't do anything.
3087 void HideCol(int col
);
3090 Shows the previously hidden column by resizing it to non-0 size.
3092 The column is shown again with the same width that it had before
3095 If the column is currently shown, this method doesn't do anything.
3097 @see HideCol(), SetColSize()
3099 void ShowCol(int col
);
3103 Sets the default overflow permission of the cells.
3105 void SetDefaultCellOverflow( bool allow
);
3108 Sets the default width for columns in the grid.
3110 This will only affect columns subsequently added to the grid unless
3111 @a resizeExistingCols is @true.
3113 If @a width is less than GetColMinimalAcceptableWidth(), then the
3114 minimal acceptable width is used instead of it.
3116 void SetDefaultColSize(int width
, bool resizeExistingCols
= false);
3119 Sets the default height for rows in the grid.
3121 This will only affect rows subsequently added to the grid unless
3122 @a resizeExistingRows is @true.
3124 If @a height is less than GetRowMinimalAcceptableHeight(), then the
3125 minimal acceptable height is used instead of it.
3127 void SetDefaultRowSize(int height
, bool resizeExistingRows
= false);
3130 Sets the width of the row labels.
3132 If @a width equals @c wxGRID_AUTOSIZE then width is calculated
3133 automatically so that no label is truncated. Note that this could be
3134 slow for a large table.
3136 void SetRowLabelSize(int width
);
3139 Sets the minimal row @a height used by default.
3141 See SetColMinimalAcceptableWidth() for more information.
3143 void SetRowMinimalAcceptableHeight(int height
);
3146 Sets the minimal @a height for the specified @a row.
3148 See SetColMinimalWidth() for more information.
3150 void SetRowMinimalHeight(int row
, int height
);
3153 Sets the height of the specified row.
3155 See SetColSize() for more information.
3157 void SetRowSize(int row
, int height
);
3160 Hides the specified row.
3162 To show the row later you need to call SetRowSize() with non-0
3163 width or ShowRow() to restore its original height.
3165 If the row is already hidden, this method doesn't do anything.
3170 void HideRow(int col
);
3173 Shows the previously hidden row.
3175 The row is shown again with the same height that it had before
3178 If the row is currently shown, this method doesn't do anything.
3180 @see HideRow(), SetRowSize()
3182 void ShowRow(int col
);
3185 Get size information for all columns at once.
3187 This method is useful when the information about all column widths
3188 needs to be saved. The widths can be later restored using
3191 @sa wxGridSizesInfo, GetRowSizes()
3193 wxGridSizesInfo
GetColSizes() const;
3196 Get size information for all row at once.
3198 @sa wxGridSizesInfo, GetColSizes()
3200 wxGridSizesInfo
GetRowSizes() const;
3203 Restore all columns sizes.
3205 This is usually called with wxGridSizesInfo object previously returned
3210 void SetColSizes(const wxGridSizesInfo
& sizeInfo
);
3213 Restore all rows sizes.
3217 void SetRowSizes(const wxGridSizesInfo
& sizeInfo
);
3220 Set the size of the cell.
3222 Specifying a value of more than 1 in @a num_rows or @a num_cols will
3223 make the cell at (@a row, @a col) span the block of the specified size,
3224 covering the other cells which would be normally shown in it. Passing 1
3225 for both arguments resets the cell to normal appearance.
3230 The row of the cell.
3232 The column of the cell.
3234 Number of rows to be occupied by this cell, must be >= 1.
3236 Number of columns to be occupied by this cell, must be >= 1.
3238 void SetCellSize(int row
, int col
, int num_rows
, int num_cols
);
3241 Get the size of the cell in number of cells covered by it.
3243 For normal cells, the function fills both @a num_rows and @a num_cols
3244 with 1 and returns CellSpan_None. For cells which span multiple cells, i.e.
3245 for which SetCellSize() had been called, the returned values are the
3246 same ones as were passed to SetCellSize() call and the function return
3247 value is CellSpan_Main.
3249 More unexpectedly, perhaps, the returned values may be @em negative for
3250 the cells which are inside a span covered by a cell occupying multiple
3251 rows or columns. They correspond to the offset of the main cell of the
3252 span from the cell passed to this functions and the function returns
3253 CellSpan_Inside value to indicate this.
3255 As an example, consider a 3*3 grid with the cell (1, 1) (the one in the
3256 middle) having a span of 2 rows and 2 columns, i.e. the grid looks like
3266 Then the function returns 2 and 2 in @a num_rows and @a num_cols for
3267 the cell (1, 1) itself and -1 and -1 for the cell (2, 2) as well as -1
3268 and 0 for the cell (2, 1).
3271 The row of the cell.
3273 The column of the cell.
3275 Pointer to variable receiving the number of rows, must not be @NULL.
3277 Pointer to variable receiving the number of columns, must not be
3280 The kind of this cell span (the return value is new in wxWidgets
3281 2.9.1, this function was void in previous wxWidgets versions).
3283 CellSpan
GetCellSize( int row
, int col
, int *num_rows
, int *num_cols
) const;
3286 Get the number of rows and columns allocated for this cell.
3288 This overload doesn't return a CellSpan value but the values returned
3289 may still be negative, see GetCellSize(int, int, int *, int *) for
3292 wxSize
GetCellSize(const wxGridCellCoords
& coords
);
3298 @name User-Resizing and Dragging
3300 Functions controlling various interactive mouse operations.
3302 By default, columns and rows can be resized by dragging the edges of
3303 their labels (this can be disabled using DisableDragColSize() and
3304 DisableDragRowSize() methods). And if grid line dragging is enabled with
3305 EnableDragGridSize() they can also be resized by dragging the right or
3306 bottom edge of the grid cells.
3308 Columns can also be moved to interactively change their order but this
3309 needs to be explicitly enabled with EnableDragColMove().
3314 Return @true if the dragging of cells is enabled or @false otherwise.
3316 bool CanDragCell() const;
3319 Returns @true if columns can be moved by dragging with the mouse.
3321 Columns can be moved by dragging on their labels.
3323 bool CanDragColMove() const;
3326 Returns @true if the given column can be resized by dragging with the
3329 This function returns @true if resizing the columns interactively is
3330 globally enabled, i.e. if DisableDragColSize() hadn't been called, and
3331 if this column wasn't explicitly marked as non-resizable with
3334 bool CanDragColSize(int col
) const;
3337 Return @true if the dragging of grid lines to resize rows and columns
3338 is enabled or @false otherwise.
3340 bool CanDragGridSize() const;
3343 Returns @true if the given row can be resized by dragging with the
3346 This is the same as CanDragColSize() but for rows.
3348 bool CanDragRowSize(int row
) const;
3351 Disable interactive resizing of the specified column.
3353 This method allows to disable resizing of an individual column in a
3354 grid where the columns are otherwise resizable (which is the case by
3357 Notice that currently there is no way to make some columns resizable in
3358 a grid where columns can't be resized by default as there doesn't seem
3359 to be any need for this in practice. There is also no way to make the
3360 column marked as fixed using this method resizable again because it is
3361 supposed that fixed columns are used for static parts of the grid and
3362 so should remain fixed during the entire grid lifetime.
3364 Also notice that disabling interactive column resizing will not prevent
3365 the program from changing the column size.
3367 @see EnableDragColSize()
3369 void DisableColResize(int col
);
3372 Disable interactive resizing of the specified row.
3374 This is the same as DisableColResize() but for rows.
3376 @see EnableDragRowSize()
3378 void DisableRowResize(int row
);
3381 Disables column moving by dragging with the mouse.
3383 Equivalent to passing @false to EnableDragColMove().
3385 void DisableDragColMove();
3388 Disables column sizing by dragging with the mouse.
3390 Equivalent to passing @false to EnableDragColSize().
3392 void DisableDragColSize();
3395 Disable mouse dragging of grid lines to resize rows and columns.
3397 Equivalent to passing @false to EnableDragGridSize()
3399 void DisableDragGridSize();
3402 Disables row sizing by dragging with the mouse.
3404 Equivalent to passing @false to EnableDragRowSize().
3406 void DisableDragRowSize();
3409 Enables or disables cell dragging with the mouse.
3411 void EnableDragCell(bool enable
= true);
3414 Enables or disables column moving by dragging with the mouse.
3416 void EnableDragColMove(bool enable
= true);
3419 Enables or disables column sizing by dragging with the mouse.
3421 @see DisableColResize()
3423 void EnableDragColSize(bool enable
= true);
3426 Enables or disables row and column resizing by dragging gridlines with
3429 void EnableDragGridSize(bool enable
= true);
3432 Enables or disables row sizing by dragging with the mouse.
3434 @see DisableRowResize()
3436 void EnableDragRowSize(bool enable
= true);
3439 Returns the column ID of the specified column position.
3441 int GetColAt(int colPos
) const;
3444 Returns the position of the specified column.
3446 int GetColPos(int colID
) const;
3449 Sets the position of the specified column.
3451 void SetColPos(int colID
, int newPos
);
3454 Sets the positions of all columns at once.
3456 This method takes an array containing the indices of the columns in
3457 their display order, i.e. uses the same convention as
3458 wxHeaderCtrl::SetColumnsOrder().
3460 void SetColumnsOrder(const wxArrayInt
& order
);
3463 Resets the position of the columns to the default.
3471 @name Cursor Movement
3476 Returns the current grid cell column position.
3478 int GetGridCursorCol() const;
3481 Returns the current grid cell row position.
3483 int GetGridCursorRow() const;
3486 Make the given cell current and ensure it is visible.
3488 This method is equivalent to calling MakeCellVisible() and
3489 SetGridCursor() and so, as with the latter, a @c wxEVT_GRID_SELECT_CELL
3490 event is generated by it and the selected cell doesn't change if the
3493 void GoToCell(int row
, int col
);
3495 Make the given cell current and ensure it is visible.
3497 This method is equivalent to calling MakeCellVisible() and
3498 SetGridCursor() and so, as with the latter, a @c wxEVT_GRID_SELECT_CELL
3499 event is generated by it and the selected cell doesn't change if the
3502 void GoToCell(const wxGridCellCoords
& coords
);
3505 Moves the grid cursor down by one row.
3507 If a block of cells was previously selected it will expand if the
3508 argument is @true or be cleared if the argument is @false.
3510 bool MoveCursorDown(bool expandSelection
);
3513 Moves the grid cursor down in the current column such that it skips to
3514 the beginning or end of a block of non-empty cells.
3516 If a block of cells was previously selected it will expand if the
3517 argument is @true or be cleared if the argument is @false.
3519 bool MoveCursorDownBlock(bool expandSelection
);
3522 Moves the grid cursor left by one column.
3524 If a block of cells was previously selected it will expand if the
3525 argument is @true or be cleared if the argument is @false.
3527 bool MoveCursorLeft(bool expandSelection
);
3530 Moves the grid cursor left in the current row such that it skips to the
3531 beginning or end of a block of non-empty cells.
3533 If a block of cells was previously selected it will expand if the
3534 argument is @true or be cleared if the argument is @false.
3536 bool MoveCursorLeftBlock(bool expandSelection
);
3539 Moves the grid cursor right by one column.
3541 If a block of cells was previously selected it will expand if the
3542 argument is @true or be cleared if the argument is @false.
3544 bool MoveCursorRight(bool expandSelection
);
3547 Moves the grid cursor right in the current row such that it skips to
3548 the beginning or end of a block of non-empty cells.
3550 If a block of cells was previously selected it will expand if the
3551 argument is @true or be cleared if the argument is @false.
3553 bool MoveCursorRightBlock(bool expandSelection
);
3556 Moves the grid cursor up by one row.
3558 If a block of cells was previously selected it will expand if the
3559 argument is @true or be cleared if the argument is @false.
3561 bool MoveCursorUp(bool expandSelection
);
3564 Moves the grid cursor up in the current column such that it skips to
3565 the beginning or end of a block of non-empty cells.
3567 If a block of cells was previously selected it will expand if the
3568 argument is @true or be cleared if the argument is @false.
3570 bool MoveCursorUpBlock(bool expandSelection
);
3573 Moves the grid cursor down by some number of rows so that the previous
3574 bottom visible row becomes the top visible row.
3576 bool MovePageDown();
3579 Moves the grid cursor up by some number of rows so that the previous
3580 top visible row becomes the bottom visible row.
3585 Set the grid cursor to the specified cell.
3587 The grid cursor indicates the current cell and can be moved by the user
3588 using the arrow keys or the mouse.
3590 Calling this function generates a @c wxEVT_GRID_SELECT_CELL event and
3591 if the event handler vetoes this event, the cursor is not moved.
3593 This function doesn't make the target call visible, use GoToCell() to
3596 void SetGridCursor(int row
, int col
);
3598 Set the grid cursor to the specified cell.
3600 The grid cursor indicates the current cell and can be moved by the user
3601 using the arrow keys or the mouse.
3603 Calling this function generates a @c wxEVT_GRID_SELECT_CELL event and
3604 if the event handler vetoes this event, the cursor is not moved.
3606 This function doesn't make the target call visible, use GoToCell() to
3609 void SetGridCursor(const wxGridCellCoords
& coords
);
3612 Set the grid's behaviour when the user presses the TAB key.
3614 Pressing the TAB key moves the grid cursor right in the current row, if
3615 there is a cell at the right and, similarly, Shift-TAB moves the cursor
3616 to the left in the current row if it's not in the first column.
3618 What happens if the cursor can't be moved because it it's already at
3619 the beginning or end of the row can be configured using this function,
3620 see wxGrid::TabBehaviour documentation for the detailed description.
3622 IF none of the standard behaviours is appropriate, you can always
3623 handle @c wxEVT_GRID_TABBING event directly to implement a custom
3628 void SetTabBehaviour(TabBehaviour behaviour
);
3634 @name User Selection
3639 Deselects all cells that are currently selected.
3641 void ClearSelection();
3644 Returns an array of individually selected cells.
3646 Notice that this array does @em not contain all the selected cells in
3647 general as it doesn't include the cells selected as part of column, row
3648 or block selection. You must use this method, GetSelectedCols(),
3649 GetSelectedRows() and GetSelectionBlockTopLeft() and
3650 GetSelectionBlockBottomRight() methods to obtain the entire selection
3653 Please notice this behaviour is by design and is needed in order to
3654 support grids of arbitrary size (when an entire column is selected in
3655 a grid with a million of columns, we don't want to create an array with
3656 a million of entries in this function, instead it returns an empty
3657 array and GetSelectedCols() returns an array containing one element).
3659 wxGridCellCoordsArray
GetSelectedCells() const;
3662 Returns an array of selected columns.
3664 Please notice that this method alone is not sufficient to find all the
3665 selected columns as it contains only the columns which were
3666 individually selected but not those being part of the block selection
3667 or being selected in virtue of all of their cells being selected
3668 individually, please see GetSelectedCells() for more details.
3670 wxArrayInt
GetSelectedCols() const;
3673 Returns an array of selected rows.
3675 Please notice that this method alone is not sufficient to find all the
3676 selected rows as it contains only the rows which were individually
3677 selected but not those being part of the block selection or being
3678 selected in virtue of all of their cells being selected individually,
3679 please see GetSelectedCells() for more details.
3681 wxArrayInt
GetSelectedRows() const;
3684 Returns the colour used for drawing the selection background.
3686 wxColour
GetSelectionBackground() const;
3689 Returns an array of the bottom right corners of blocks of selected
3692 Please see GetSelectedCells() for more information about the selection
3693 representation in wxGrid.
3695 @see GetSelectionBlockTopLeft()
3697 wxGridCellCoordsArray
GetSelectionBlockBottomRight() const;
3700 Returns an array of the top left corners of blocks of selected cells.
3702 Please see GetSelectedCells() for more information about the selection
3703 representation in wxGrid.
3705 @see GetSelectionBlockBottomRight()
3707 wxGridCellCoordsArray
GetSelectionBlockTopLeft() const;
3710 Returns the colour used for drawing the selection foreground.
3712 wxColour
GetSelectionForeground() const;
3715 Returns the current selection mode.
3717 @see SetSelectionMode().
3719 wxGridSelectionModes
GetSelectionMode() const;
3722 Returns @true if the given cell is selected.
3724 bool IsInSelection(int row
, int col
) const;
3726 Returns @true if the given cell is selected.
3728 bool IsInSelection(const wxGridCellCoords
& coords
) const;
3731 Returns @true if there are currently any selected cells, rows, columns
3734 bool IsSelection() const;
3737 Selects all cells in the grid.
3742 Selects a rectangular block of cells.
3744 If @a addToSelected is @false then any existing selection will be
3745 deselected; if @true the column will be added to the existing
3748 void SelectBlock(int topRow
, int leftCol
, int bottomRow
, int rightCol
,
3749 bool addToSelected
= false);
3751 Selects a rectangular block of cells.
3753 If @a addToSelected is @false then any existing selection will be
3754 deselected; if @true the column will be added to the existing
3757 void SelectBlock(const wxGridCellCoords
& topLeft
,
3758 const wxGridCellCoords
& bottomRight
,
3759 bool addToSelected
= false);
3762 Selects the specified column.
3764 If @a addToSelected is @false then any existing selection will be
3765 deselected; if @true the column will be added to the existing
3768 This method won't select anything if the current selection mode is
3771 void SelectCol(int col
, bool addToSelected
= false);
3774 Selects the specified row.
3776 If @a addToSelected is @false then any existing selection will be
3777 deselected; if @true the row will be added to the existing selection.
3779 This method won't select anything if the current selection mode is
3780 wxGridSelectColumns.
3782 void SelectRow(int row
, bool addToSelected
= false);
3785 Set the colour to be used for drawing the selection background.
3787 void SetSelectionBackground(const wxColour
& c
);
3790 Set the colour to be used for drawing the selection foreground.
3792 void SetSelectionForeground(const wxColour
& c
);
3795 Set the selection behaviour of the grid.
3797 The existing selection is converted to conform to the new mode if
3798 possible and discarded otherwise (e.g. any individual selected cells
3799 are deselected if the new mode allows only the selection of the entire
3802 void SetSelectionMode(wxGridSelectionModes selmode
);
3813 Returns the number of pixels per horizontal scroll increment.
3817 @see GetScrollLineY(), SetScrollLineX(), SetScrollLineY()
3819 int GetScrollLineX() const;
3822 Returns the number of pixels per vertical scroll increment.
3826 @see GetScrollLineX(), SetScrollLineX(), SetScrollLineY()
3828 int GetScrollLineY() const;
3831 Returns @true if a cell is either entirely or at least partially
3832 visible in the grid window.
3834 By default, the cell must be entirely visible for this function to
3835 return @true but if @a wholeCellVisible is @false, the function returns
3836 @true even if the cell is only partially visible.
3838 bool IsVisible(int row
, int col
, bool wholeCellVisible
= true) const;
3840 Returns @true if a cell is either entirely or at least partially
3841 visible in the grid window.
3843 By default, the cell must be entirely visible for this function to
3844 return @true but if @a wholeCellVisible is @false, the function returns
3845 @true even if the cell is only partially visible.
3847 bool IsVisible(const wxGridCellCoords
& coords
,
3848 bool wholeCellVisible
= true) const;
3851 Brings the specified cell into the visible grid cell area with minimal
3854 Does nothing if the cell is already visible.
3856 void MakeCellVisible(int row
, int col
);
3858 Brings the specified cell into the visible grid cell area with minimal
3861 Does nothing if the cell is already visible.
3863 void MakeCellVisible(const wxGridCellCoords
& coords
);
3866 Sets the number of pixels per horizontal scroll increment.
3870 @see GetScrollLineX(), GetScrollLineY(), SetScrollLineY()
3872 void SetScrollLineX(int x
);
3875 Sets the number of pixels per vertical scroll increment.
3879 @see GetScrollLineX(), GetScrollLineY(), SetScrollLineX()
3881 void SetScrollLineY(int y
);
3887 @name Cell and Device Coordinate Translation
3892 Convert grid cell coordinates to grid window pixel coordinates.
3894 This function returns the rectangle that encloses the block of cells
3895 limited by @a topLeft and @a bottomRight cell in device coords and
3896 clipped to the client size of the grid window.
3900 wxRect
BlockToDeviceRect(const wxGridCellCoords
& topLeft
,
3901 const wxGridCellCoords
& bottomRight
) const;
3904 Return the rectangle corresponding to the grid cell's size and position
3905 in logical coordinates.
3907 @see BlockToDeviceRect()
3909 wxRect
CellToRect(int row
, int col
) const;
3911 Return the rectangle corresponding to the grid cell's size and position
3912 in logical coordinates.
3914 @see BlockToDeviceRect()
3916 wxRect
CellToRect(const wxGridCellCoords
& coords
) const;
3919 Returns the column at the given pixel position.
3922 The x position to evaluate.
3924 If @true, rather than returning @c wxNOT_FOUND, it returns either
3925 the first or last column depending on whether @a x is too far to
3926 the left or right respectively.
3928 The column index or @c wxNOT_FOUND.
3930 int XToCol(int x
, bool clipToMinMax
= false) const;
3933 Returns the column whose right hand edge is close to the given logical
3936 If no column edge is near to this position @c wxNOT_FOUND is returned.
3938 int XToEdgeOfCol(int x
) const;
3941 Translates logical pixel coordinates to the grid cell coordinates.
3943 Notice that this function expects logical coordinates on input so if
3944 you use this function in a mouse event handler you need to translate
3945 the mouse position, which is expressed in device coordinates, to
3948 @see XToCol(), YToRow()
3950 wxGridCellCoords
XYToCell(int x
, int y
) const;
3952 Translates logical pixel coordinates to the grid cell coordinates.
3954 Notice that this function expects logical coordinates on input so if
3955 you use this function in a mouse event handler you need to translate
3956 the mouse position, which is expressed in device coordinates, to
3959 @see XToCol(), YToRow()
3961 wxGridCellCoords
XYToCell(const wxPoint
& pos
) const;
3962 // XYToCell(int, int, wxGridCellCoords&) overload is intentionally
3963 // undocumented, using it is ugly and non-const reference parameters are
3964 // not used in wxWidgets API
3967 Returns the row whose bottom edge is close to the given logical @a y
3970 If no row edge is near to this position @c wxNOT_FOUND is returned.
3972 int YToEdgeOfRow(int y
) const;
3975 Returns the grid row that corresponds to the logical @a y coordinate.
3977 Returns @c wxNOT_FOUND if there is no row at the @a y position.
3979 int YToRow(int y
, bool clipToMinMax
= false) const;
3985 @name Miscellaneous Functions
3990 Appends one or more new columns to the right of the grid.
3992 The @a updateLabels argument is not used at present. If you are using a
3993 derived grid table class you will need to override
3994 wxGridTableBase::AppendCols(). See InsertCols() for further
3997 @return @true on success or @false if appending columns failed.
3999 bool AppendCols(int numCols
= 1, bool updateLabels
= true);
4002 Appends one or more new rows to the bottom of the grid.
4004 The @a updateLabels argument is not used at present. If you are using a
4005 derived grid table class you will need to override
4006 wxGridTableBase::AppendRows(). See InsertRows() for further
4009 @return @true on success or @false if appending rows failed.
4011 bool AppendRows(int numRows
= 1, bool updateLabels
= true);
4014 Return @true if the horizontal grid lines stop at the last column
4015 boundary or @false if they continue to the end of the window.
4017 The default is to clip grid lines.
4019 @see ClipHorzGridLines(), AreVertGridLinesClipped()
4021 bool AreHorzGridLinesClipped() const;
4024 Return @true if the vertical grid lines stop at the last row
4025 boundary or @false if they continue to the end of the window.
4027 The default is to clip grid lines.
4029 @see ClipVertGridLines(), AreHorzGridLinesClipped()
4031 bool AreVertGridLinesClipped() const;
4034 Increments the grid's batch count.
4036 When the count is greater than zero repainting of the grid is
4037 suppressed. Each call to BeginBatch must be matched by a later call to
4038 EndBatch(). Code that does a lot of grid modification can be enclosed
4039 between BeginBatch() and EndBatch() calls to avoid screen flicker. The
4040 final EndBatch() call will cause the grid to be repainted.
4042 Notice that you should use wxGridUpdateLocker which ensures that there
4043 is always a matching EndBatch() call for this BeginBatch() if possible
4044 instead of calling this method directly.
4049 Clears all data in the underlying grid table and repaints the grid.
4051 The table is not deleted by this function. If you are using a derived
4052 table class then you need to override wxGridTableBase::Clear() for this
4053 function to have any effect.
4058 Change whether the horizontal grid lines are clipped by the end of the
4061 By default the grid lines are not drawn beyond the end of the last
4062 column but after calling this function with @a clip set to @false they
4063 will be drawn across the entire grid window.
4065 @see AreHorzGridLinesClipped(), ClipVertGridLines()
4067 void ClipHorzGridLines(bool clip
);
4070 Change whether the vertical grid lines are clipped by the end of the
4073 By default the grid lines are not drawn beyond the end of the last
4074 row but after calling this function with @a clip set to @false they
4075 will be drawn across the entire grid window.
4077 @see AreVertGridLinesClipped(), ClipHorzGridLines()
4079 void ClipVertGridLines(bool clip
);
4082 Deletes one or more columns from a grid starting at the specified
4085 The @a updateLabels argument is not used at present. If you are using a
4086 derived grid table class you will need to override
4087 wxGridTableBase::DeleteCols(). See InsertCols() for further
4090 @return @true on success or @false if deleting columns failed.
4092 bool DeleteCols(int pos
= 0, int numCols
= 1, bool updateLabels
= true);
4095 Deletes one or more rows from a grid starting at the specified
4098 The @a updateLabels argument is not used at present. If you are using a
4099 derived grid table class you will need to override
4100 wxGridTableBase::DeleteRows(). See InsertRows() for further
4103 @return @true on success or @false if appending rows failed.
4105 bool DeleteRows(int pos
= 0, int numRows
= 1, bool updateLabels
= true);
4108 Decrements the grid's batch count.
4110 When the count is greater than zero repainting of the grid is
4111 suppressed. Each previous call to BeginBatch() must be matched by a
4112 later call to EndBatch(). Code that does a lot of grid modification can
4113 be enclosed between BeginBatch() and EndBatch() calls to avoid screen
4114 flicker. The final EndBatch() will cause the grid to be repainted.
4116 @see wxGridUpdateLocker
4121 Overridden wxWindow method.
4126 Causes immediate repainting of the grid.
4128 Use this instead of the usual wxWindow::Refresh().
4130 void ForceRefresh();
4133 Returns the number of times that BeginBatch() has been called without
4134 (yet) matching calls to EndBatch(). While the grid's batch count is
4135 greater than zero the display will not be updated.
4137 int GetBatchCount();
4140 Returns the total number of grid columns.
4142 This is the same as the number of columns in the underlying grid table.
4144 int GetNumberCols() const;
4147 Returns the total number of grid rows.
4149 This is the same as the number of rows in the underlying grid table.
4151 int GetNumberRows() const;
4154 Returns the attribute for the given cell creating one if necessary.
4156 If the cell already has an attribute, it is returned. Otherwise a new
4157 attribute is created, associated with the cell and returned. In any
4158 case the caller must call DecRef() on the returned pointer.
4160 This function may only be called if CanHaveAttributes() returns @true.
4162 wxGridCellAttr
*GetOrCreateCellAttr(int row
, int col
) const;
4165 Returns a base pointer to the current table object.
4167 The returned pointer is still owned by the grid.
4169 wxGridTableBase
*GetTable() const;
4172 Inserts one or more new columns into a grid with the first new column
4173 at the specified position.
4175 Notice that inserting the columns in the grid requires grid table
4176 cooperation: when this method is called, grid object begins by
4177 requesting the underlying grid table to insert new columns. If this is
4178 successful the table notifies the grid and the grid updates the
4179 display. For a default grid (one where you have called CreateGrid())
4180 this process is automatic. If you are using a custom grid table
4181 (specified with SetTable()) then you must override
4182 wxGridTableBase::InsertCols() in your derived table class.
4185 The position which the first newly inserted column will have.
4187 The number of columns to insert.
4191 @true if the columns were successfully inserted, @false if an error
4192 occurred (most likely the table couldn't be updated).
4194 bool InsertCols(int pos
= 0, int numCols
= 1, bool updateLabels
= true);
4197 Inserts one or more new rows into a grid with the first new row at the
4200 Notice that you must implement wxGridTableBase::InsertRows() if you use
4201 a grid with a custom table, please see InsertCols() for more
4205 The position which the first newly inserted row will have.
4207 The number of rows to insert.
4211 @true if the rows were successfully inserted, @false if an error
4212 occurred (most likely the table couldn't be updated).
4214 bool InsertRows(int pos
= 0, int numRows
= 1, bool updateLabels
= true);
4217 Invalidates the cached attribute for the given cell.
4219 For efficiency reasons, wxGrid may cache the recently used attributes
4220 (currently it caches only the single most recently used one, in fact)
4221 which can result in the cell appearance not being refreshed even when
4222 the attribute returned by your custom wxGridCellAttrProvider-derived
4223 class has changed. To force the grid to refresh the cell attribute,
4224 this function may be used. Notice that calling it will not result in
4225 actually redrawing the cell, you still need to call
4226 wxWindow::RefreshRect() to invalidate the area occupied by the cell in
4227 the window to do this. Also note that you don't need to call this
4228 function if you store the attributes in wxGrid itself, i.e. use its
4229 SetAttr() and similar methods, it is only useful when using a separate
4230 custom attributes provider.
4233 The row of the cell whose attribute needs to be queried again.
4235 The column of the cell whose attribute needs to be queried again.
4239 void RefreshAttr(int row
, int col
);
4242 Draws part or all of a wxGrid on a wxDC for printing or display.
4244 Pagination can be accomplished by using sequential Render() calls
4245 with appropriate values in wxGridCellCoords topLeft and bottomRight.
4248 The wxDC to be drawn on.
4250 The position on the wxDC where rendering should begin. If not
4251 specified drawing will begin at the wxDC MaxX() and MaxY().
4253 The size of the area on the wxDC that the rendered wxGrid should
4254 occupy. If not specified the drawing will be scaled to fit the
4255 available dc width or height. The wxGrid's aspect ratio is
4256 maintained whether or not size is specified.
4258 The top left cell of the block to be drawn. Defaults to ( 0, 0 ).
4260 The bottom right cell of the block to be drawn. Defaults to row and
4263 A combination of values from wxGridRenderStyle.
4267 void Render( wxDC
& dc
,
4268 const wxPoint
& pos
= wxDefaultPosition
,
4269 const wxSize
& size
= wxDefaultSize
,
4270 const wxGridCellCoords
& topLeft
= wxGridCellCoords( -1, -1 ),
4271 const wxGridCellCoords
& bottomRight
= wxGridCellCoords( -1, -1 ),
4272 int style
= wxGRID_DRAW_DEFAULT
);
4275 Sets the cell attributes for all cells in the specified column.
4277 For more information about controlling grid cell attributes see the
4278 wxGridCellAttr cell attribute class and the @ref overview_grid.
4280 void SetColAttr(int col
, wxGridCellAttr
* attr
);
4283 Sets the extra margins used around the grid area.
4285 A grid may occupy more space than needed for its data display and
4286 this function allows to set how big this extra space is
4288 void SetMargins(int extraWidth
, int extraHeight
);
4291 Sets the cell attributes for all cells in the specified row.
4293 The grid takes ownership of the attribute pointer.
4295 See the wxGridCellAttr class for more information about controlling
4298 void SetRowAttr(int row
, wxGridCellAttr
* attr
);
4304 @name Sorting support.
4306 wxGrid doesn't provide any support for sorting the data but it does
4307 generate events allowing the user code to sort it and supports
4308 displaying the sort indicator in the column used for sorting.
4310 To use wxGrid sorting support you need to handle wxEVT_GRID_COL_SORT
4311 event (and not veto it) and resort the data displayed in the grid. The
4312 grid will automatically update the sorting indicator on the column
4315 You can also call the functions in this section directly to update the
4316 sorting indicator. Once again, they don't do anything with the grid
4317 data, it remains your responsibility to actually sort it appropriately.
4322 Return the column in which the sorting indicator is currently
4325 Returns @c wxNOT_FOUND if sorting indicator is not currently displayed
4328 @see SetSortingColumn()
4330 int GetSortingColumn() const;
4333 Return @true if this column is currently used for sorting.
4335 @see GetSortingColumn()
4337 bool IsSortingBy(int col
) const;
4340 Return @true if the current sorting order is ascending or @false if it
4343 It only makes sense to call this function if GetSortingColumn() returns
4344 a valid column index and not @c wxNOT_FOUND.
4346 @see SetSortingColumn()
4348 bool IsSortOrderAscending() const;
4351 Set the column to display the sorting indicator in and its direction.
4354 The column to display the sorting indicator in or @c wxNOT_FOUND to
4355 remove any currently displayed sorting indicator.
4357 If @true, display the ascending sort indicator, otherwise display
4358 the descending sort indicator.
4360 @see GetSortingColumn(), IsSortOrderAscending()
4362 void SetSortingColumn(int col
, bool ascending
= true);
4365 Remove any currently shown sorting indicator.
4367 This is equivalent to calling SetSortingColumn() with @c wxNOT_FOUND
4370 void UnsetSortingColumn();
4375 @name Accessors for component windows.
4377 Return the various child windows of wxGrid.
4379 wxGrid is an empty parent window for 4 children representing the column
4380 labels window (top), the row labels window (left), the corner window
4381 (top left) and the main grid window. It may be necessary to use these
4382 individual windows and not the wxGrid window itself if you need to
4383 handle events for them (this can be done using wxEvtHandler::Connect()
4384 or wxWindow::PushEventHandler()) or do something else requiring the use
4385 of the correct window pointer. Notice that you should not, however,
4386 change these windows (e.g. reposition them or draw over them) because
4387 they are managed by wxGrid itself.
4392 Return the main grid window containing the grid cells.
4394 This window is always shown.
4396 wxWindow
*GetGridWindow() const;
4399 Return the row labels window.
4401 This window is not shown if the row labels were hidden using
4404 wxWindow
*GetGridRowLabelWindow() const;
4407 Return the column labels window.
4409 This window is not shown if the columns labels were hidden using
4412 Depending on whether UseNativeColHeader() was called or not this can be
4413 either a wxHeaderCtrl or a plain wxWindow. This function returns a valid
4414 window pointer in either case but in the former case you can also use
4415 GetGridColHeader() to access it if you need wxHeaderCtrl-specific
4418 wxWindow
*GetGridColLabelWindow() const;
4421 Return the window in the top left grid corner.
4423 This window is shown only of both columns and row labels are shown and
4424 normally doesn't contain anything. Clicking on it is handled by wxGrid
4425 however and can be used to select the entire grid.
4427 wxWindow
*GetGridCornerLabelWindow() const;
4430 Return the header control used for column labels display.
4432 This function can only be called if UseNativeColHeader() had been
4435 wxHeaderCtrl
*GetGridColHeader() const;
4441 Returns @true if this grid has support for cell attributes.
4443 The grid supports attributes if it has the associated table which, in
4444 turn, has attributes support, i.e. wxGridTableBase::CanHaveAttributes()
4447 bool CanHaveAttributes() const;
4450 Get the minimal width of the given column/row.
4452 The value returned by this function may be different than that returned
4453 by GetColMinimalAcceptableWidth() if SetColMinimalWidth() had been
4454 called for this column.
4456 int GetColMinimalWidth(int col
) const;
4459 Returns the coordinate of the right border specified column.
4461 int GetColRight(int col
) const;
4464 Returns the coordinate of the left border specified column.
4466 int GetColLeft(int col
) const;
4469 Returns the minimal size for the given column.
4471 The value returned by this function may be different than that returned
4472 by GetRowMinimalAcceptableHeight() if SetRowMinimalHeight() had been
4473 called for this row.
4475 int GetRowMinimalHeight(int col
) const;
4481 @class wxGridUpdateLocker
4483 This small class can be used to prevent wxGrid from redrawing during its
4484 lifetime by calling wxGrid::BeginBatch() in its constructor and
4485 wxGrid::EndBatch() in its destructor. It is typically used in a function
4486 performing several operations with a grid which would otherwise result in
4487 flicker. For example:
4492 m_grid = new wxGrid(this, ...);
4494 wxGridUpdateLocker noUpdates(m_grid);
4495 m_grid-AppendColumn();
4496 // ... many other operations with m_grid ...
4499 // destructor called, grid refreshed
4503 Using this class is easier and safer than calling wxGrid::BeginBatch() and
4504 wxGrid::EndBatch() because you don't risk missing the call the latter (due
4505 to an exception for example).
4510 class wxGridUpdateLocker
4514 Creates an object preventing the updates of the specified @a grid. The
4515 parameter could be @NULL in which case nothing is done. If @a grid is
4516 non-@NULL then the grid must exist for longer than this
4517 wxGridUpdateLocker object itself.
4519 The default constructor could be followed by a call to Create() to set
4520 the grid object later.
4522 wxGridUpdateLocker(wxGrid
* grid
= NULL
);
4525 Destructor reenables updates for the grid this object is associated
4528 ~wxGridUpdateLocker();
4531 This method can be called if the object had been constructed using the
4532 default constructor. It must not be called more than once.
4534 void Create(wxGrid
* grid
);
4542 This event class contains information about various grid events.
4544 Notice that all grid event table macros are available in two versions:
4545 @c EVT_GRID_XXX and @c EVT_GRID_CMD_XXX. The only difference between the
4546 two is that the former doesn't allow to specify the grid window identifier
4547 and so takes a single parameter, the event handler, but is not suitable if
4548 there is more than one grid control in the window where the event table is
4549 used (as it would catch the events from all the grids). The version with @c
4550 CMD takes the id as first argument and the event handler as the second one
4551 and so can be used with multiple grids as well. Otherwise there are no
4552 difference between the two and only the versions without the id are
4553 documented below for brevity.
4555 @beginEventTable{wxGridEvent}
4556 @event{EVT_GRID_CELL_CHANGING(func)}
4557 The user is about to change the data in a cell. The new cell value as
4558 string is available from GetString() event object method. This event
4559 can be vetoed if the change is not allowed.
4560 Processes a @c wxEVT_GRID_CELL_CHANGING event type.
4561 @event{EVT_GRID_CELL_CHANGED(func)}
4562 The user changed the data in a cell. The old cell value as string is
4563 available from GetString() event object method. Notice that vetoing
4564 this event still works for backwards compatibility reasons but any new
4565 code should only veto EVT_GRID_CELL_CHANGING event and not this one.
4566 Processes a @c wxEVT_GRID_CELL_CHANGED event type.
4567 @event{EVT_GRID_CELL_LEFT_CLICK(func)}
4568 The user clicked a cell with the left mouse button. Processes a
4569 @c wxEVT_GRID_CELL_LEFT_CLICK event type.
4570 @event{EVT_GRID_CELL_LEFT_DCLICK(func)}
4571 The user double-clicked a cell with the left mouse button. Processes a
4572 @c wxEVT_GRID_CELL_LEFT_DCLICK event type.
4573 @event{EVT_GRID_CELL_RIGHT_CLICK(func)}
4574 The user clicked a cell with the right mouse button. Processes a
4575 @c wxEVT_GRID_CELL_RIGHT_CLICK event type.
4576 @event{EVT_GRID_CELL_RIGHT_DCLICK(func)}
4577 The user double-clicked a cell with the right mouse button. Processes a
4578 @c wxEVT_GRID_CELL_RIGHT_DCLICK event type.
4579 @event{EVT_GRID_EDITOR_HIDDEN(func)}
4580 The editor for a cell was hidden. Processes a
4581 @c wxEVT_GRID_EDITOR_HIDDEN event type.
4582 @event{EVT_GRID_EDITOR_SHOWN(func)}
4583 The editor for a cell was shown. Processes a
4584 @c wxEVT_GRID_EDITOR_SHOWN event type.
4585 @event{EVT_GRID_LABEL_LEFT_CLICK(func)}
4586 The user clicked a label with the left mouse button. Processes a
4587 @c wxEVT_GRID_LABEL_LEFT_CLICK event type.
4588 @event{EVT_GRID_LABEL_LEFT_DCLICK(func)}
4589 The user double-clicked a label with the left mouse button. Processes a
4590 @c wxEVT_GRID_LABEL_LEFT_DCLICK event type.
4591 @event{EVT_GRID_LABEL_RIGHT_CLICK(func)}
4592 The user clicked a label with the right mouse button. Processes a
4593 @c wxEVT_GRID_LABEL_RIGHT_CLICK event type.
4594 @event{EVT_GRID_LABEL_RIGHT_DCLICK(func)}
4595 The user double-clicked a label with the right mouse button. Processes
4596 a @c wxEVT_GRID_LABEL_RIGHT_DCLICK event type.
4597 @event{EVT_GRID_SELECT_CELL(func)}
4598 The given cell was made current, either by user or by the program via a
4599 call to SetGridCursor() or GoToCell(). Processes a
4600 @c wxEVT_GRID_SELECT_CELL event type.
4601 @event{EVT_GRID_COL_MOVE(func)}
4602 The user tries to change the order of the columns in the grid by
4603 dragging the column specified by GetCol(). This event can be vetoed to
4604 either prevent the user from reordering the column change completely
4605 (but notice that if you don't want to allow it at all, you simply
4606 shouldn't call wxGrid::EnableDragColMove() in the first place), vetoed
4607 but handled in some way in the handler, e.g. by really moving the
4608 column to the new position at the associated table level, or allowed to
4609 proceed in which case wxGrid::SetColPos() is used to reorder the
4610 columns display order without affecting the use of the column indices
4612 This event macro corresponds to @c wxEVT_GRID_COL_MOVE event type.
4613 @event{EVT_GRID_COL_SORT(func)}
4614 This event is generated when a column is clicked by the user and its
4615 name is explained by the fact that the custom reaction to a click on a
4616 column is to sort the grid contents by this column. However the grid
4617 itself has no special support for sorting and it's up to the handler of
4618 this event to update the associated table. But if the event is handled
4619 (and not vetoed) the grid supposes that the table was indeed resorted
4620 and updates the column to indicate the new sort order and refreshes
4622 This event macro corresponds to @c wxEVT_GRID_COL_SORT event type.
4623 @event{EVT_GRID_TABBING(func)}
4624 This event is generated when the user presses TAB or Shift-TAB in the
4625 grid. It can be used to customize the simple default TAB handling
4626 logic, e.g. to go to the next non-empty cell instead of just the next
4627 cell. See also wxGrid::SetTabBehaviour(). This event is new since
4632 @category{grid,events}
4634 class wxGridEvent
: public wxNotifyEvent
4638 Default constructor.
4642 Constructor for initializing all event attributes.
4644 wxGridEvent(int id
, wxEventType type
, wxObject
* obj
,
4645 int row
= -1, int col
= -1, int x
= -1, int y
= -1,
4646 bool sel
= true, const wxKeyboardState
& kbd
= wxKeyboardState());
4649 Returns @true if the Alt key was down at the time of the event.
4651 bool AltDown() const;
4654 Returns @true if the Control key was down at the time of the event.
4656 bool ControlDown() const;
4659 Column at which the event occurred.
4661 Notice that for a @c wxEVT_GRID_SELECT_CELL event this column is the
4662 column of the newly selected cell while the previously selected cell
4663 can be retrieved using wxGrid::GetGridCursorCol().
4665 virtual int GetCol();
4668 Position in pixels at which the event occurred.
4670 wxPoint
GetPosition();
4673 Row at which the event occurred.
4675 Notice that for a @c wxEVT_GRID_SELECT_CELL event this row is the row
4676 of the newly selected cell while the previously selected cell can be
4677 retrieved using wxGrid::GetGridCursorRow().
4679 virtual int GetRow();
4682 Returns @true if the Meta key was down at the time of the event.
4684 bool MetaDown() const;
4687 Returns @true if the user is selecting grid cells, or @false if
4693 Returns @true if the Shift key was down at the time of the event.
4695 bool ShiftDown() const;
4701 @class wxGridSizeEvent
4703 This event class contains information about a row/column resize event.
4705 @beginEventTable{wxGridSizeEvent}
4706 @event{EVT_GRID_CMD_COL_SIZE(id, func)}
4707 The user resized a column, corresponds to @c wxEVT_GRID_COL_SIZE event
4709 @event{EVT_GRID_CMD_ROW_SIZE(id, func)}
4710 The user resized a row, corresponds to @c wxEVT_GRID_ROW_SIZE event
4712 @event{EVT_GRID_COL_SIZE(func)}
4713 Same as EVT_GRID_CMD_COL_SIZE() but uses `wxID_ANY` id.
4714 @event{EVT_GRID_COL_AUTO_SIZE(func)}
4715 This event is sent when a column must be resized to its best size, e.g.
4716 when the user double clicks the column divider. The default
4717 implementation simply resizes the column to fit the column label (but
4718 not its contents as this could be too slow for big grids). This macro
4719 corresponds to @c wxEVT_GRID_COL_AUTO_SIZE event type and is new since
4721 @event{EVT_GRID_ROW_SIZE(func)}
4722 Same as EVT_GRID_CMD_ROW_SIZE() but uses `wxID_ANY` id.
4726 @category{grid,events}
4728 class wxGridSizeEvent
: public wxNotifyEvent
4732 Default constructor.
4736 Constructor for initializing all event attributes.
4738 wxGridSizeEvent(int id
, wxEventType type
, wxObject
* obj
,
4739 int rowOrCol
= -1, int x
= -1, int y
= -1,
4740 const wxKeyboardState
& kbd
= wxKeyboardState());
4743 Returns @true if the Alt key was down at the time of the event.
4745 bool AltDown() const;
4748 Returns @true if the Control key was down at the time of the event.
4750 bool ControlDown() const;
4753 Position in pixels at which the event occurred.
4755 wxPoint
GetPosition();
4758 Row or column at that was resized.
4763 Returns @true if the Meta key was down at the time of the event.
4765 bool MetaDown() const;
4768 Returns @true if the Shift key was down at the time of the event.
4770 bool ShiftDown() const;
4776 @class wxGridRangeSelectEvent
4778 @beginEventTable{wxGridRangeSelectEvent}
4779 @event{EVT_GRID_RANGE_SELECT(func)}
4780 The user selected a group of contiguous cells. Processes a
4781 @c wxEVT_GRID_RANGE_SELECT event type.
4782 @event{EVT_GRID_CMD_RANGE_SELECT(id, func)}
4783 The user selected a group of contiguous cells; variant taking a window
4784 identifier. Processes a @c wxEVT_GRID_RANGE_SELECT event type.
4788 @category{grid,events}
4790 class wxGridRangeSelectEvent
: public wxNotifyEvent
4794 Default constructor.
4796 wxGridRangeSelectEvent();
4798 Constructor for initializing all event attributes.
4800 wxGridRangeSelectEvent(int id
, wxEventType type
,
4802 const wxGridCellCoords
& topLeft
,
4803 const wxGridCellCoords
& bottomRight
,
4804 bool sel
= true, const wxKeyboardState
& kbd
= wxKeyboardState());
4807 Returns @true if the Alt key was down at the time of the event.
4809 bool AltDown() const;
4812 Returns @true if the Control key was down at the time of the event.
4814 bool ControlDown() const;
4817 Top left corner of the rectangular area that was (de)selected.
4819 wxGridCellCoords
GetBottomRightCoords();
4822 Bottom row of the rectangular area that was (de)selected.
4827 Left column of the rectangular area that was (de)selected.
4832 Right column of the rectangular area that was (de)selected.
4837 Top left corner of the rectangular area that was (de)selected.
4839 wxGridCellCoords
GetTopLeftCoords();
4842 Top row of the rectangular area that was (de)selected.
4847 Returns @true if the Meta key was down at the time of the event.
4849 bool MetaDown() const;
4852 Returns @true if the area was selected, @false otherwise.
4857 Returns @true if the Shift key was down at the time of the event.
4859 bool ShiftDown() const;
4865 @class wxGridEditorCreatedEvent
4867 @beginEventTable{wxGridEditorCreatedEvent}
4868 @event{EVT_GRID_EDITOR_CREATED(func)}
4869 The editor for a cell was created. Processes a
4870 @c wxEVT_GRID_EDITOR_CREATED event type.
4871 @event{EVT_GRID_CMD_EDITOR_CREATED(id, func)}
4872 The editor for a cell was created; variant taking a window identifier.
4873 Processes a @c wxEVT_GRID_EDITOR_CREATED event type.
4877 @category{grid,events}
4879 class wxGridEditorCreatedEvent
: public wxCommandEvent
4883 Default constructor.
4885 wxGridEditorCreatedEvent();
4887 Constructor for initializing all event attributes.
4889 wxGridEditorCreatedEvent(int id
, wxEventType type
, wxObject
* obj
,
4890 int row
, int col
, wxControl
* ctrl
);
4893 Returns the column at which the event occurred.
4898 Returns the edit control.
4900 wxControl
* GetControl();
4903 Returns the row at which the event occurred.
4908 Sets the column at which the event occurred.
4910 void SetCol(int col
);
4913 Sets the edit control.
4915 void SetControl(wxControl
* ctrl
);
4918 Sets the row at which the event occurred.
4920 void SetRow(int row
);
4924 wxEventType wxEVT_GRID_CELL_LEFT_CLICK
;
4925 wxEventType wxEVT_GRID_CELL_RIGHT_CLICK
;
4926 wxEventType wxEVT_GRID_CELL_LEFT_DCLICK
;
4927 wxEventType wxEVT_GRID_CELL_RIGHT_DCLICK
;
4928 wxEventType wxEVT_GRID_LABEL_LEFT_CLICK
;
4929 wxEventType wxEVT_GRID_LABEL_RIGHT_CLICK
;
4930 wxEventType wxEVT_GRID_LABEL_LEFT_DCLICK
;
4931 wxEventType wxEVT_GRID_LABEL_RIGHT_DCLICK
;
4932 wxEventType wxEVT_GRID_ROW_SIZE
;
4933 wxEventType wxEVT_GRID_COL_SIZE
;
4934 wxEventType wxEVT_GRID_COL_AUTO_SIZE
;
4935 wxEventType wxEVT_GRID_RANGE_SELECT
;
4936 wxEventType wxEVT_GRID_CELL_CHANGING
;
4937 wxEventType wxEVT_GRID_CELL_CHANGED
;
4938 wxEventType wxEVT_GRID_SELECT_CELL
;
4939 wxEventType wxEVT_GRID_EDITOR_SHOWN
;
4940 wxEventType wxEVT_GRID_EDITOR_HIDDEN
;
4941 wxEventType wxEVT_GRID_EDITOR_CREATED
;
4942 wxEventType wxEVT_GRID_CELL_BEGIN_DRAG
;
4943 wxEventType wxEVT_GRID_COL_MOVE
;
4944 wxEventType wxEVT_GRID_COL_SORT
;
4945 wxEventType wxEVT_GRID_TABBING
;