X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/613de0e89efab1cbf8463ea06e0cf0b2914fbce9..d45d5bb2b27ca5af59d4c9be5911025736e02b01:/samples/grid/griddemo.cpp?ds=sidebyside diff --git a/samples/grid/griddemo.cpp b/samples/grid/griddemo.cpp index d21b8a0761..c485fdfe4d 100644 --- a/samples/grid/griddemo.cpp +++ b/samples/grid/griddemo.cpp @@ -35,9 +35,14 @@ #include "wx/grid.h" #include "wx/headerctrl.h" #include "wx/generic/gridctrl.h" +#include "wx/generic/grideditors.h" #include "griddemo.h" +#ifndef __WXMSW__ + #include "../sample.xpm" +#endif + // ---------------------------------------------------------------------------- // wxWin macros // ---------------------------------------------------------------------------- @@ -133,6 +138,7 @@ BEGIN_EVENT_TABLE( GridFrame, wxFrame ) EVT_GRID_COL_SIZE( GridFrame::OnColSize ) EVT_GRID_SELECT_CELL( GridFrame::OnSelectCell ) EVT_GRID_RANGE_SELECT( GridFrame::OnRangeSelected ) + EVT_GRID_CELL_CHANGING( GridFrame::OnCellValueChanging ) EVT_GRID_CELL_CHANGE( GridFrame::OnCellValueChanged ) EVT_GRID_CELL_BEGIN_DRAG( GridFrame::OnCellBeginDrag ) @@ -146,6 +152,8 @@ GridFrame::GridFrame() wxDefaultPosition, wxDefaultSize ) { + SetIcon(wxICON(sample)); + wxMenu *fileMenu = new wxMenu; fileMenu->Append( ID_VTABLE, _T("&Virtual table test\tCtrl-V")); fileMenu->Append( ID_BUGS_TABLE, _T("&Bugs table test\tCtrl-B")); @@ -1059,13 +1067,36 @@ void GridFrame::OnRangeSelected( wxGridRangeSelectEvent& ev ) ev.Skip(); } +void GridFrame::OnCellValueChanging( wxGridEvent& ev ) +{ + int row = ev.GetRow(), + col = ev.GetCol(); + + wxLogMessage("Value of cell at (%d, %d): about to change " + "from \"%s\" to \"%s\"", + row, col, + grid->GetCellValue(row, col), ev.GetString()); + + // test how vetoing works + if ( ev.GetString() == "42" ) + { + wxLogMessage("Vetoing the change."); + ev.Veto(); + return; + } + + ev.Skip(); +} + void GridFrame::OnCellValueChanged( wxGridEvent& ev ) { int row = ev.GetRow(), col = ev.GetCol(); - wxLogMessage(_T("Value changed for cell at row %d, col %d: now \"%s\""), - row, col, grid->GetCellValue(row, col).c_str()); + wxLogMessage("Value of cell at (%d, %d) changed and is now \"%s\" " + "(was \"%s\")", + row, col, + grid->GetCellValue(row, col), ev.GetString()); ev.Skip(); } @@ -1121,6 +1152,13 @@ void GridFrame::About( wxCommandEvent& WXUNUSED(ev) ) aboutInfo.AddDeveloper(wxT("Julian Smart")); aboutInfo.AddDeveloper(wxT("Vadim Zeitlin")); + // this is just to force the generic version of the about + // dialog under wxMSW so that it's easy to test if the grid + // repaints correctly when it has lost focus and a dialog + // (different from the Windows standard message box -- it doesn't + // work with it for some reason) is moved over it. + aboutInfo.SetWebSite(wxT("http://www.wxwidgets.org")); + wxAboutBox(aboutInfo); } @@ -1846,7 +1884,7 @@ private: // fla for EVT_IDLE handler bool m_shouldUpdateOrder; - DECLARE_NO_COPY_CLASS(TabularGridFrame) + wxDECLARE_NO_COPY_CLASS(TabularGridFrame); DECLARE_EVENT_TABLE() }; @@ -1969,4 +2007,3 @@ void GridFrame::OnTabularTable(wxCommandEvent&) { new TabularGridFrame; } -