Add wxGridCellDateRenderer and wxGridCellDateRenderer which can be used for the grid cells containing only dates, without times. Also add wxGrid::SetColFormatDate() convenience function. Refactor wxGridCellDateTimeRenderer slightly to reuse its code. Closes https://github.com/wxWidgets/wxWidgets/pull/1101
		
			
				
	
	
		
			137 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			137 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        grid.h
 | 
						|
// Purpose:     topic overview
 | 
						|
// Author:      wxWidgets team
 | 
						|
// Licence:     wxWindows licence
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
/**
 | 
						|
 | 
						|
@page overview_grid wxGrid Overview
 | 
						|
 | 
						|
@tableofcontents
 | 
						|
 | 
						|
wxGrid and its related classes are used for displaying and editing tabular
 | 
						|
data. wxGrid supports custom attributes for the table cells, allowing to
 | 
						|
completely customize its appearance and uses a separate grid table
 | 
						|
(wxGridTableBase-derived) class for the data management meaning that it can be
 | 
						|
used to display arbitrary amounts of data.
 | 
						|
 | 
						|
 | 
						|
 | 
						|
@section overview_grid_simpleexample Getting Started
 | 
						|
 | 
						|
For simple applications you need only refer to the wxGrid class in your code.
 | 
						|
This example shows how you might create a grid in a frame or dialog constructor
 | 
						|
and illustrates some of the formatting functions.
 | 
						|
 | 
						|
@code
 | 
						|
// Create a wxGrid object
 | 
						|
 | 
						|
grid = new wxGrid( this,
 | 
						|
                    -1,
 | 
						|
                    wxPoint( 0, 0 ),
 | 
						|
                    wxSize( 400, 300 ) );
 | 
						|
 | 
						|
// Then we call CreateGrid to set the dimensions of the grid
 | 
						|
// (100 rows and 10 columns in this example)
 | 
						|
grid->CreateGrid( 100, 10 );
 | 
						|
 | 
						|
// We can set the sizes of individual rows and columns
 | 
						|
// in pixels
 | 
						|
grid->SetRowSize( 0, 60 );
 | 
						|
grid->SetColSize( 0, 120 );
 | 
						|
 | 
						|
// And set grid cell contents as strings
 | 
						|
grid->SetCellValue( 0, 0, "wxGrid is good" );
 | 
						|
 | 
						|
// We can specify that some cells are read->only
 | 
						|
grid->SetCellValue( 0, 3, "This is read->only" );
 | 
						|
grid->SetReadOnly( 0, 3 );
 | 
						|
 | 
						|
// Colours can be specified for grid cell contents
 | 
						|
grid->SetCellValue(3, 3, "green on grey");
 | 
						|
grid->SetCellTextColour(3, 3, *wxGREEN);
 | 
						|
grid->SetCellBackgroundColour(3, 3, *wxLIGHT_GREY);
 | 
						|
 | 
						|
// We can specify the some cells will store numeric
 | 
						|
// values rather than strings. Here we set grid column 5
 | 
						|
// to hold floating point values displayed with width of 6
 | 
						|
// and precision of 2
 | 
						|
grid->SetColFormatFloat(5, 6, 2);
 | 
						|
grid->SetCellValue(0, 6, "3.1415");
 | 
						|
@endcode
 | 
						|
 | 
						|
Here is a list of classes related to wxGrid:
 | 
						|
 | 
						|
@li wxGrid: The main grid control class itself.
 | 
						|
@li wxGridTableBase: The base class for grid data provider.
 | 
						|
@li wxGridStringTable: Simple wxGridTableBase implementation supporting only
 | 
						|
    string data items and storing them all in memory (hence suitable for not
 | 
						|
    too large grids only).
 | 
						|
@li wxGridCellAttr: A cell attribute, allowing to customize its appearance as
 | 
						|
    well as the renderer and editor used for displaying and editing it.
 | 
						|
@li wxGridCellAttrProvider: The object responsible for storing and retrieving
 | 
						|
    the cell attributes.
 | 
						|
@li wxGridColLabelWindow: The window showing the grid columns labels.
 | 
						|
@li wxGridRowLabelWindow: The window showing the grid rows labels.
 | 
						|
@li wxGridCornerLabelWindow: The window used in the upper left grid corner.
 | 
						|
@li wxGridWindow: The window representing the main part of the grid.
 | 
						|
@li wxGridCellRenderer: Base class for objects used to display a cell value.
 | 
						|
@li wxGridCellStringRenderer: Renderer showing the cell as a text string.
 | 
						|
@li wxGridCellNumberRenderer: Renderer showing the cell as an integer number.
 | 
						|
@li wxGridCellFloatRenderer: Renderer showing the cell as a floating point
 | 
						|
    number.
 | 
						|
@li wxGridCellBoolRenderer: Renderer showing the cell as checked or unchecked
 | 
						|
    box.
 | 
						|
@li wxGridCellDateRenderer: Renderer showing the cell as date.
 | 
						|
@li wxGridCellEditor: Base class for objects used to edit the cell value.
 | 
						|
@li wxGridCellStringEditor: Editor for cells containing text strings.
 | 
						|
@li wxGridCellNumberEditor: Editor for cells containing integer numbers.
 | 
						|
@li wxGridCellFloatEditor: Editor for cells containing floating point numbers.
 | 
						|
@li wxGridCellBoolEditor: Editor for boolean-valued cells.
 | 
						|
@li wxGridCellChoiceEditor: Editor allowing to choose one of the predefined
 | 
						|
    strings (and possibly enter new one).
 | 
						|
@li wxGridCellDateEditor: Editor for cells containing dates without time component.
 | 
						|
@li wxGridEvent: The event sent by most of wxGrid actions.
 | 
						|
@li wxGridSizeEvent: The special event sent when a grid column or row is
 | 
						|
    resized.
 | 
						|
@li wxGridRangeSelectEvent: The special event sent when a range of cells is
 | 
						|
    selected in the grid.
 | 
						|
@li wxGridEditorCreatedEvent: The special event sent when a cell editor is
 | 
						|
    created.
 | 
						|
@li wxGridSelection: The object efficiently representing the grid selection.
 | 
						|
@li wxGridTypeRegistry: Contains information about the data types supported by
 | 
						|
    the grid.
 | 
						|
 | 
						|
 | 
						|
 | 
						|
@section overview_grid_resizing Column and Row Sizes
 | 
						|
 | 
						|
@b NB: This section will discuss the resizing of wxGrid rows only to avoid
 | 
						|
repetitions but everything in it also applies to grid columns, just replace @c
 | 
						|
Row in the method names with @c Col.
 | 
						|
 | 
						|
Initially all wxGrid rows have the same height, which can be modified for all
 | 
						|
of them at once using wxGrid::SetDefaultRowSize(). However, unlike simpler
 | 
						|
controls such as wxListBox or wxListCtrl, wxGrid also allows its rows to be
 | 
						|
individually resized to have their own height using wxGrid::SetRowSize() (as a
 | 
						|
special case, a row may be hidden entirely by setting its size to 0, which is
 | 
						|
done by a helper wxGrid::HideRow() method). It is also possible to resize a row
 | 
						|
to fit its contents with wxGrid::AutoSizeRow() or do it for all rows at once
 | 
						|
with wxGrid::AutoSizeRows().
 | 
						|
 | 
						|
Additionally, by default the user can also drag the row separator lines to
 | 
						|
resize the rows interactively. This can be forbidden completely by calling
 | 
						|
wxGrid::DisableDragRowSize() or just for the individual rows using
 | 
						|
wxGrid::DisableRowResize().
 | 
						|
 | 
						|
If you do allow the user to resize the grid rows, it may be a good idea to save
 | 
						|
their heights and restore it when the grid is recreated the next time (possibly
 | 
						|
during a next program execution): the functions wxGrid::GetRowSizes() and
 | 
						|
wxGrid::SetRowSizes() can help with this, you will just need to serialize
 | 
						|
wxGridSizesInfo structure returned by the former in some way and deserialize it
 | 
						|
back before calling the latter.
 | 
						|
 | 
						|
*/
 |