void GridFrame::OnVTable(wxCommandEvent& )
{
- BigGridFrame* win = new BigGridFrame();
- win->Show(TRUE);
+ static long s_sizeGrid = 10000;
+
+ s_sizeGrid = wxGetNumberFromUser("Size of the table to create",
+ "Size: ",
+ "wxGridDemo question",
+ s_sizeGrid,
+ 0, 32000, this);
+ if ( s_sizeGrid != -1 )
+ {
+ BigGridFrame* win = new BigGridFrame(s_sizeGrid);
+ win->Show(TRUE);
+ }
}
// ----------------------------------------------------------------------------
// BigGridFrame and BigGridTable: Sample of a non-standard table
// ----------------------------------------------------------------------------
-BigGridFrame::BigGridFrame()
- : wxFrame(NULL, -1, "Plugin Virtual Table", wxDefaultPosition,
- wxSize(500, 450))
+BigGridFrame::BigGridFrame(long sizeGrid)
+ : wxFrame(NULL, -1, "Plugin Virtual Table",
+ wxDefaultPosition, wxSize(500, 450))
{
m_grid = new wxGrid(this, -1, wxDefaultPosition, wxDefaultSize);
- m_table = new BigGridTable;
+ m_table = new BigGridTable(sizeGrid);
m_grid->SetTable(m_table, TRUE);
}
bool isSelected);
};
+// ----------------------------------------------------------------------------
+// demonstration of virtual table which doesn't store all of its data in
+// memory
+// ----------------------------------------------------------------------------
-class BigGridTable : public wxGridTableBase {
+class BigGridTable : public wxGridTableBase
+{
public:
- long GetNumberRows() { return 10000; }
- long GetNumberCols() { return 10000; }
+ BigGridTable(long sizeGrid) { m_sizeGrid = sizeGrid; }
+
+ long GetNumberRows() { return m_sizeGrid; }
+ long GetNumberCols() { return m_sizeGrid; }
- wxString GetValue( int row, int col ) {
- wxString str;
- str.Printf("(%d, %d)", row, col);
- return str;
+ wxString GetValue( int row, int col )
+ {
+ return wxString::Format("(%d, %d)", row, col);
}
- void SetValue( int , int , const wxString& ) {}
+ void SetValue( int , int , const wxString& ) { /* ignore */ }
bool IsEmptyCell( int , int ) { return FALSE; }
+
+private:
+ long m_sizeGrid;
};
-class BigGridFrame : public wxFrame {
+class BigGridFrame : public wxFrame
+{
public:
- BigGridFrame();
+ BigGridFrame(long sizeGrid);
private:
wxGrid* m_grid;
};
-#endif
+#endif // griddemo_h