// 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");
Here is a list of classes related to wxGrid:
Row
in the method names with 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.
![]() |
[ top ] |