X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b5ffecfc985136771bb521074c0f46a07894e62e..38cfbffa153c8835025b4207faaf0a12b0b53e6f:/demos/dbbrowse/dbgrid.cpp diff --git a/demos/dbbrowse/dbgrid.cpp b/demos/dbbrowse/dbgrid.cpp index 9cbb930891..f84b628f96 100644 --- a/demos/dbbrowse/dbgrid.cpp +++ b/demos/dbbrowse/dbgrid.cpp @@ -1,87 +1,94 @@ -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // Name: DBGrid.cpp // Purpose: wxGrid sample // Author: Mark Johnson // Modified by: 19990929.mj10777 a reuseable DBGrid // Created: 19990929 -// RCS-ID: // Copyright: (c) // Licence: wxWindows license -//--------------------------------------------------------------------------- -//-- all #ifdefs that the whole Project needs. ------------------------------ -//--------------------------------------------------------------------------- +// RCS-ID: $Id$ +//---------------------------------------------------------------------------------------- +//-- all #ifdefs that the whole Project needs. ------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __GNUG__ #pragma implementation #pragma interface #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx/wx.h". #include "wx/wxprec.h" -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifdef __BORLANDC__ #pragma hdrstop #endif -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- #ifndef WX_PRECOMP #include "wx/wx.h" #endif -//--------------------------------------------------------------------------- -//-- all #includes that every .cpp needs --- 19990807.mj10777 --- -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- +//-- all #includes that every .cpp needs --- 19990807.mj10777 ---------------- +//---------------------------------------------------------------------------------------- #include "std.h" // sorgsam Pflegen ! -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- BEGIN_EVENT_TABLE(DBGrid, wxGrid) EVT_MOTION (DBGrid::OnMouseMove) // DBGrid - EVT_GRID_LABEL_LEFT_CLICK( DBGrid::OnLabelLeftClick ) - EVT_GRID_LABEL_RIGHT_CLICK( DBGrid::OnLabelRightClick ) - EVT_GRID_LABEL_LEFT_DCLICK( DBGrid::OnLabelLeftDClick ) - EVT_GRID_LABEL_RIGHT_DCLICK( DBGrid::OnLabelRightDClick ) + // ------------ + EVT_GRID_CELL_CHANGE( DBGrid::OnCellChange ) EVT_GRID_CELL_LEFT_CLICK( DBGrid::OnCellLeftClick ) - EVT_GRID_CELL_RIGHT_CLICK( DBGrid::OnCellRightClick ) EVT_GRID_CELL_LEFT_DCLICK( DBGrid::OnCellLeftDClick ) + EVT_GRID_CELL_RIGHT_CLICK( DBGrid::OnCellRightClick ) EVT_GRID_CELL_RIGHT_DCLICK( DBGrid::OnCellRightDClick ) - EVT_GRID_ROW_SIZE( DBGrid::OnRowSize ) // EVT_GRID_COL_SIZE( DBGrid::OnColSize ) + // EVT_GRID_ROW_SIZE( DBGrid::OnRowSize ) + EVT_GRID_EDITOR_SHOWN( DBGrid::OnEditorShown ) + EVT_GRID_EDITOR_HIDDEN( DBGrid::OnEditorHidden ) + EVT_GRID_LABEL_LEFT_CLICK( DBGrid::OnLabelLeftClick ) + EVT_GRID_LABEL_LEFT_DCLICK( DBGrid::OnLabelLeftDClick ) + EVT_GRID_LABEL_RIGHT_CLICK( DBGrid::OnLabelRightClick ) + EVT_GRID_LABEL_RIGHT_DCLICK( DBGrid::OnLabelRightDClick ) EVT_GRID_RANGE_SELECT( DBGrid::OnRangeSelected ) - EVT_GRID_CELL_CHANGE( DBGrid::OnCellChange ) + EVT_GRID_ROW_SIZE( DBGrid::OnRowSize ) + EVT_GRID_SELECT_CELL( DBGrid::OnSelectCell ) EVT_MENU(GRID_EDIT,DBGrid::OnModusEdit) EVT_MENU(GRID_BROWSE,DBGrid::OnModusBrowse) END_EVENT_TABLE() -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // wxListCtrl(parent, id, pos, size, style) // wxGrid(parent,-1,wxPoint( 0, 0 ), wxSize( 400, 300 ) ); -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- // DBGrid -//--------------------------------------------------------------------------- - // DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size): - // wxGrid(parent, id, pos, size) +//---------------------------------------------------------------------------------------- +// DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size): +// wxGrid(parent, id, pos, size) DBGrid::DBGrid(wxWindow *parent, const wxWindowID id,const wxPoint& pos,const wxSize& size, long style): - wxGrid(parent, id, pos, size, style) + wxGrid(parent, id, pos, size, style) { - f_Temp = new wxFont(10,wxSWISS,wxNORMAL,wxBOLD,FALSE,"Comic Sans MS"); - wxPanel::SetFont(* f_Temp); - b_EditModus = TRUE; - //---------------------------------------------------------------------------------------------------------------------------- + b_EditModus = FALSE; + //--------------------------------------------------------------------------------------- popupMenu1 = new wxMenu(""); popupMenu1->Append(GRID_EDIT, _("Edit Modus")); popupMenu2 = new wxMenu(""); popupMenu2->Append(GRID_BROWSE, _("Browse Modus")); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- DBGrid::~DBGrid() { + delete popupMenu1; + delete popupMenu2; } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- int DBGrid::OnTableView(wxString Table) { - //--------------------------------------------------------------------------- + wxStopWatch sw; + //--------------------------------------------------------------------------------------- int i=0,x,y,z, ValidTable=0; wxString Temp0; - SetLabelFont(* f_Temp); - //--------------------------------------------------------------------------- + wxBeginBusyCursor(); + SetDefaultCellFont(* pDoc->ft_Doc); + //--------------------------------------------------------------------------------------- ct_BrowserDB = (db_Br+i_Which)->ct_BrowserDB; // Get the DSN Pointer - //---------------------------------------------------------------------------- + //--------------------------------------------------------------------------------------- if (ct_BrowserDB) // Valid pointer (!= NULL) ? { // Pointer is Valid, use the wxDatabase Information for (x=0;xnumTables;x++) // go through the Tables @@ -90,7 +97,7 @@ int DBGrid::OnTableView(wxString Table) { // Yes, the Data of this Table shall be put into the Grid ValidTable = x; // Save the Tablenumber (db_Br+i_Which)->OnSelect(Table,FALSE); // Select * from "table" - // Set the local Pointer to the Column Information we are going to use + // Set the local Pointer to the Column Information we are going to use (db_Br+i_Which)->cl_BrowserDB = (ct_BrowserDB->pTableInf+x)->pColInf; if ((ct_BrowserDB->pTableInf+x)->pColInf) // Valid pointer (!= NULL) ? { // Pointer is Valid, Column Informationen sind Vorhanden @@ -98,6 +105,7 @@ int DBGrid::OnTableView(wxString Table) (db_Br+i_Which)->i_Which = ValidTable; // Still used ???? mj10777 if (i == 0) // If the Table is empty, then show one empty row i++; + // wxLogMessage(_("\n-I-> DBGrid::OnTableView() : Vor CreateGrid")); CreateGrid(i,(ct_BrowserDB->pTableInf+x)->numCols); // Records , Columns for (y=0;y<(ct_BrowserDB->pTableInf+x)->numCols;y++) // Loop through the Fields { // The Field / Column name is used here as Row Titel @@ -116,50 +124,75 @@ int DBGrid::OnTableView(wxString Table) } if (z % 50 == 0) { - Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - Record %6d has been read."),Table.c_str(),z); + Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - Record %6d (from %d) has been read."),Table.c_str(),z,(db_Br+i_Which)->i_Records); pDoc->p_MainFrame->SetStatusText(Temp0, 0); } } // for (z=0;z<(db_Br+i_Which)->i_Records;z++) - Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - %6d Records have been read."),Table.c_str(),z); + Temp0.Printf(_("-I-> DBGrid::OnTableView(%s) - %6d Records have been read. - Time needed : %ld ms"),Table.c_str(),z,sw.Time()); + wxLogMessage(Temp0); pDoc->p_MainFrame->SetStatusText(Temp0, 0); // The Grid has been filled, now leave goto Weiter; } // if ((ct_BrowserDB->pTableInf+x)->pColInf) else - wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid Column Pointer : Failed")); + wxLogMessage(_("\n-E-> DBGrid::OnTableView() : Invalid Column Pointer : Failed")); } // if ((ct_BrowserDB->pTableInf+x)->tableType == "TABLE") } // for (x=0;xnumTables;x++) } // if (ct_BrowserDB) else - wxLogMessage(_("\n-E-> DBGrid::OnTableView():: Invalid DSN Pointer : Failed")); - //--------------------------------------------------------------------------- + wxLogMessage(_("\n-E-> DBGrid::OnTableView() : Invalid DSN Pointer : Failed")); + //--------------------------------------------------------------------------------------- Weiter: - SetEditInPlace(b_EditModus); // Activate in-place Editing (FALSE) - //--------------------------------------------------------------------------- + EnableEditing(b_EditModus); // Deactivate in-place Editing + wxEndBusyCursor(); + //--------------------------------------------------------------------------------------- wxLogMessage(_("-I-> DBGrid::OnTableView() - End")); return 0; } -//--------------------------------------------------------------------------- -void DBGrid::OnModusEdit(wxMenu& menu, wxCommandEvent& event) +//---------------------------------------------------------------------------------------- +void DBGrid::OnModusEdit(wxCommandEvent& event) { b_EditModus = TRUE; // Needed by PopupMenu - SetEditable(FALSE); // Do not Edit with Text Edit Control - SetEditInPlace(b_EditModus); // Deactivate in-place Editing + EnableEditing(b_EditModus); // Activate in-place Editing UpdateDimensions(); // Redraw the Grid + // wxLogMessage(_("-I-> DBGrid::OnModusEdit() - End")); } -//--------------------------------------------------------------------------- -void DBGrid::OnModusBrowse(wxMenu& menu, wxCommandEvent& event) +//---------------------------------------------------------------------------------------- +void DBGrid::OnModusBrowse(wxCommandEvent& event) { b_EditModus = FALSE; // Needed by PopupMenu - SetEditInPlace(b_EditModus); // Deactivate in-place Editing + EnableEditing(b_EditModus); // Deactivate in-place Editing UpdateDimensions(); // Redraw the Grid + // wxLogMessage(_("-I-> DBGrid::OnModusBrowse() - End")); +} +//---------------------------------------------------------------------------------------- +void DBGrid::OnEditorShown( wxGridEvent& ev ) +{ + // wxLogMessage(_("-I-> DBGrid::OnEditorShown() - End")); + ev.Skip(); +} +//---------------------------------------------------------------------------------------- +void DBGrid::OnEditorHidden( wxGridEvent& ev ) +{ + // wxLogMessage(_("-I-> DBGrid::OnEditorHidden() - End")); + ev.Skip(); } -//------------------------------------------------------------------------------ +void DBGrid::OnSelectCell( wxGridEvent& ev ) +{ + logBuf = ""; + logBuf << "Selected cell at row " << ev.GetRow() + << " col " << ev.GetCol(); + wxLogMessage( "%s", logBuf.c_str() ); + // you must call Skip() if you want the default processing + // to occur in wxGrid + ev.Skip(); +} +//---------------------------------------------------------------------------------------- void DBGrid::OnMouseMove(wxMouseEvent &event) { MousePos = event.GetPosition(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnLabelLeftClick( wxGridEvent& ev ) { logBuf = "DBGrid::OnLabelLeftClick : "; @@ -182,10 +215,10 @@ void DBGrid::OnLabelLeftClick( wxGridEvent& ev ) wxLogMessage(logBuf.c_str()); ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnLabelRightClick( wxGridEvent& ev ) { - //------------------- + //------------------------------------------------------- if (b_EditModus) PopupMenu(popupMenu2,MousePos.x,MousePos.y); else @@ -211,7 +244,7 @@ void DBGrid::OnLabelRightClick( wxGridEvent& ev ) wxLogMessage(logBuf.c_str()); ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnLabelLeftDClick( wxGridEvent& ev ) { logBuf = "DBGrid::OnLabelLeftDClick : "; @@ -234,7 +267,7 @@ void DBGrid::OnLabelLeftDClick( wxGridEvent& ev ) wxLogMessage(logBuf.c_str()); ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnLabelRightDClick( wxGridEvent& ev ) { logBuf = "DBGrid::OnLabelRightDClick : "; @@ -257,12 +290,12 @@ void DBGrid::OnLabelRightDClick( wxGridEvent& ev ) wxLogMessage(logBuf.c_str()); ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellLeftClick( wxGridEvent& ev ) { logBuf = "DBGrid::OnCellLeftClick : "; logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); + << " col " << ev.GetCol(); // wxLogMessage( "%s", logBuf.c_str() ); // wxMessageBox(logBuf); logBuf += "\n"; @@ -272,12 +305,12 @@ void DBGrid::OnCellLeftClick( wxGridEvent& ev ) // ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellRightClick( wxGridEvent& ev ) { logBuf = "DBGrid::OnCellRightClick : "; logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); + << " col " << ev.GetCol(); // wxLogMessage( "%s", logBuf.c_str() ); // wxMessageBox(logBuf); logBuf += "\n"; @@ -287,12 +320,12 @@ void DBGrid::OnCellRightClick( wxGridEvent& ev ) // ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellLeftDClick( wxGridEvent& ev ) { logBuf = "DBGrid::OnCellLeftDClick : "; logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); + << " col " << ev.GetCol(); // wxLogMessage( "%s", logBuf.c_str() ); // wxMessageBox(logBuf); logBuf += "\n"; @@ -302,12 +335,12 @@ void DBGrid::OnCellLeftDClick( wxGridEvent& ev ) // ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellRightDClick( wxGridEvent& ev ) { logBuf = "DBGrid::OnCellRightDClick : "; logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); + << " col " << ev.GetCol(); // wxLogMessage( "%s", logBuf.c_str() ); // wxMessageBox(logBuf); logBuf += "\n"; @@ -317,12 +350,12 @@ void DBGrid::OnCellRightDClick( wxGridEvent& ev ) // ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnCellChange( wxGridEvent& ev ) { logBuf = "DBGrid::OnCellChange : "; logBuf << "Cell at row " << ev.GetRow() - << " col " << ev.GetCol(); + << " col " << ev.GetCol(); // wxLogMessage( "%s", logBuf.c_str() ); // wxMessageBox(logBuf); logBuf += "\n"; @@ -332,7 +365,7 @@ void DBGrid::OnCellChange( wxGridEvent& ev ) // ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnRowSize( wxGridSizeEvent& ev ) { logBuf = "DBGrid::OnRowSize : "; @@ -342,7 +375,7 @@ void DBGrid::OnRowSize( wxGridSizeEvent& ev ) wxLogMessage(logBuf.c_str()); ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnColSize( wxGridSizeEvent& ev ) { logBuf = "DBGrid::OnColSize : "; @@ -350,22 +383,19 @@ void DBGrid::OnColSize( wxGridSizeEvent& ev ) // wxLogMessage( "%s", logBuf.c_str() ); logBuf += "\n"; wxLogMessage(logBuf.c_str()); - ev.Skip(); } -//--------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- void DBGrid::OnRangeSelected( wxGridRangeSelectEvent& ev ) { logBuf = "DBGrid::OnRangeSelected : "; logBuf << "Selected cells from row " << ev.GetTopRow() - << " col " << ev.GetLeftCol() - << " to row " << ev.GetBottomRow() - << " col " << ev.GetRightCol(); - + << " col " << ev.GetLeftCol() + << " to row " << ev.GetBottomRow() + << " col " << ev.GetRightCol(); logBuf += "\n"; // wxLogMessage( "%s", logBuf.c_str() ); wxLogMessage(logBuf.c_str()); - ev.Skip(); } -//--------------------------------------------------------------------------- +//----------------------------------------------------------------------------------------