wxChar* usage changed over to wxString in various places

Warning fixes when compiling in compatibility 2_4 mode to force use of the desired wxDbTable constructor
Added OnDClick() event to listbox to auto-click the OK button to select a name
Unicode fix of a SQL_C_CHAR reference


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30411 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
George Tasker
2004-11-10 12:19:55 +00:00
parent c3677ad324
commit e689d52ab5
2 changed files with 62 additions and 43 deletions

View File

@@ -89,7 +89,7 @@ extern wxApp *DatabaseDemoApp;
* NOTE: The value returned by this function is for temporary use only and * NOTE: The value returned by this function is for temporary use only and
* should be copied for long term use * should be copied for long term use
*/ */
const wxChar *GetExtendedDBErrorMsg2(wxDb *pDb, wxChar *ErrFile, int ErrLine) wxString GetExtendedDBErrorMsg2(wxDb *pDb, wxChar *ErrFile, int ErrLine)
{ {
static wxString msg; static wxString msg;
msg = wxT(""); msg = wxT("");
@@ -125,17 +125,17 @@ const wxChar *GetExtendedDBErrorMsg2(wxDb *pDb, wxChar *ErrFile, int ErrLine)
} }
msg += wxT("\n"); msg += wxT("\n");
return msg.c_str(); return msg;
} // GetExtendedDBErrorMsg } // GetExtendedDBErrorMsg
// Clookup constructor // Clookup constructor
Clookup::Clookup(wxString tblName, wxString colName, wxDb *pDb, const wxString &defDir) Clookup::Clookup(wxString tblName, wxString colName, wxDb *pDb, const wxString &defDir)
: wxDbTable(pDb, tblName, 1, wxEmptyString, !wxDB_QUERY_ONLY, : wxDbTable(pDb, tblName, 1, (const wxString &)wxEmptyString, !wxDB_QUERY_ONLY,
defDir) defDir)
{ {
SetColDefs (0, colName, DB_DATA_TYPE_VARCHAR, lookupCol, SQL_C_CHAR, LOOKUP_COL_LEN+1, false, false); SetColDefs (0, colName, DB_DATA_TYPE_VARCHAR, lookupCol, SQL_C_WXCHAR, LOOKUP_COL_LEN+1, false, false);
} // Clookup() } // Clookup()
@@ -143,7 +143,7 @@ Clookup::Clookup(wxString tblName, wxString colName, wxDb *pDb, const wxString &
// Clookup2 constructor // Clookup2 constructor
Clookup2::Clookup2(wxString tblName, wxString colName1, wxString colName2, Clookup2::Clookup2(wxString tblName, wxString colName1, wxString colName2,
wxDb *pDb, const wxString &defDir) wxDb *pDb, const wxString &defDir)
: wxDbTable(pDb, tblName, (UWORD)(1 + (wxStrlen(colName2) > 0)), wxEmptyString, : wxDbTable(pDb, tblName, (UWORD)(1 + (wxStrlen(colName2) > 0)), (const wxString &)wxEmptyString,
!wxDB_QUERY_ONLY, defDir) !wxDB_QUERY_ONLY, defDir)
{ {
wxASSERT(pDb); wxASSERT(pDb);
@@ -153,10 +153,10 @@ Clookup2::Clookup2(wxString tblName, wxString colName1, wxString colName2,
int i = 0; int i = 0;
SetColDefs ((UWORD)i, colName1, DB_DATA_TYPE_VARCHAR, lookupCol1, SQL_C_CHAR, LOOKUP_COL_LEN+1, false, false); SetColDefs ((UWORD)i, colName1, DB_DATA_TYPE_VARCHAR, lookupCol1, SQL_C_WXCHAR, LOOKUP_COL_LEN+1, false, false);
if (wxStrlen(colName2) > 0) if (wxStrlen(colName2) > 0)
SetColDefs ((UWORD)(++i), colName2, DB_DATA_TYPE_VARCHAR, lookupCol2, SQL_C_CHAR, LOOKUP_COL_LEN+1, false, false); SetColDefs ((UWORD)(++i), colName2, DB_DATA_TYPE_VARCHAR, lookupCol2, SQL_C_WXCHAR, LOOKUP_COL_LEN+1, false, false);
} // Clookup2() } // Clookup2()
@@ -165,12 +165,13 @@ BEGIN_EVENT_TABLE(ClookUpDlg, wxDialog)
EVT_BUTTON(LOOKUP_DIALOG_OK, ClookUpDlg::OnButton) EVT_BUTTON(LOOKUP_DIALOG_OK, ClookUpDlg::OnButton)
EVT_BUTTON(LOOKUP_DIALOG_CANCEL, ClookUpDlg::OnButton) EVT_BUTTON(LOOKUP_DIALOG_CANCEL, ClookUpDlg::OnButton)
EVT_CLOSE(ClookUpDlg::OnClose) EVT_CLOSE(ClookUpDlg::OnClose)
EVT_LISTBOX_DCLICK(LOOKUP_DIALOG_SELECT, ClookUpDlg::OnDClick)
END_EVENT_TABLE() END_EVENT_TABLE()
// This is a generic lookup constructor that will work with any table and any column // This is a generic lookup constructor that will work with any table and any column
ClookUpDlg::ClookUpDlg(wxWindow *parent, wxChar *windowTitle, wxChar *tableName, ClookUpDlg::ClookUpDlg(wxWindow *parent, const wxString &windowTitle, const wxString &tableName,
wxChar *colName, wxChar *where, wxChar *orderBy, const wxString &colName, const wxString &where, const wxString &orderBy,
wxDb *pDb, const wxString &defDir) wxDb *pDb, const wxString &defDir)
: wxDialog (parent, LOOKUP_DIALOG, wxT("Select..."), wxDefaultPosition, wxSize(400, 290)) : wxDialog (parent, LOOKUP_DIALOG, wxT("Select..."), wxDefaultPosition, wxSize(400, 290))
{ {
@@ -183,9 +184,9 @@ ClookUpDlg::ClookUpDlg(wxWindow *parent, wxChar *windowTitle, wxChar *tableName,
noDisplayCols = 1; noDisplayCols = 1;
col1Len = 0; col1Len = 0;
pLookUpSelectList = new wxListBox(this, LOOKUP_DIALOG_SELECT, wxPoint( 5, 15), wxSize(384, 195), 0, 0, wxLB_SINGLE|wxLB_ALWAYS_SB, wxDefaultValidator, wxT("LookUpSelectList")); pLookUpSelectList = new wxListBox(this, LOOKUP_DIALOG_SELECT, wxPoint( 5, 15), wxSize(384, 195), 0, 0, wxLB_SINGLE|wxLB_ALWAYS_SB, wxDefaultValidator, wxT("LookUpSelectList"));
pLookUpOkBtn = new wxButton(this, LOOKUP_DIALOG_OK, wxT("&Ok"), wxPoint(113, 222), wxSize( 70, 35), 0, wxDefaultValidator, wxT("LookUpOkBtn")); pLookUpOkBtn = new wxButton(this, LOOKUP_DIALOG_OK, wxT("&Ok"), wxPoint(113, 222), wxSize( 70, 35), 0, wxDefaultValidator, wxT("LookUpOkBtn"));
pLookUpCancelBtn = new wxButton(this, LOOKUP_DIALOG_CANCEL, wxT("C&ancel"), wxPoint(212, 222), wxSize( 70, 35), 0, wxDefaultValidator, wxT("LookUpCancelBtn")); pLookUpCancelBtn = new wxButton(this, LOOKUP_DIALOG_CANCEL, wxT("C&ancel"), wxPoint(212, 222), wxSize( 70, 35), 0, wxDefaultValidator, wxT("LookUpCancelBtn"));
widgetPtrsSet = true; widgetPtrsSet = true;
@@ -193,7 +194,7 @@ ClookUpDlg::ClookUpDlg(wxWindow *parent, wxChar *windowTitle, wxChar *tableName,
lookup = new Clookup(tableName, colName, pDb, defDir); lookup = new Clookup(tableName, colName, pDb, defDir);
if (!lookup) if (!lookup)
{ {
wxMessageBox(wxT("Error allocating memory for 'Clookup'object."),wxT("Error...")); wxMessageBox(wxT("Error allocating memory for 'Clookup' object."),wxT("Error..."));
Close(); Close();
return; return;
} }
@@ -201,8 +202,8 @@ ClookUpDlg::ClookUpDlg(wxWindow *parent, wxChar *windowTitle, wxChar *tableName,
if (!lookup->Open()) if (!lookup->Open())
{ {
wxString tStr; wxString tStr;
tStr.Printf(wxT("Unable to open the table '%s'."),tableName); tStr.Printf(wxT("Unable to open the table '%s'."), tableName);
wxMessageBox(tStr,wxT("ODBC Error...")); wxMessageBox(tStr, wxT("ODBC Error..."));
Close(); Close();
return; return;
} }
@@ -211,7 +212,7 @@ ClookUpDlg::ClookUpDlg(wxWindow *parent, wxChar *windowTitle, wxChar *tableName,
lookup->SetWhereClause(where); lookup->SetWhereClause(where);
if (!lookup->Query()) if (!lookup->Query())
{ {
wxMessageBox(wxT("ODBC error during Query()"),wxT("ODBC Error...")); wxMessageBox(wxT("ODBC error during Query()"), wxT("ODBC Error..."));
Close(); Close();
return; return;
} }
@@ -265,10 +266,11 @@ ClookUpDlg::ClookUpDlg(wxWindow *parent, wxChar *windowTitle, wxChar *tableName,
// records are being saved, but not committed to the db, yet should be included // records are being saved, but not committed to the db, yet should be included
// in the lookup window. // in the lookup window.
// //
ClookUpDlg::ClookUpDlg(wxWindow *parent, wxChar *windowTitle, wxChar *tableName, ClookUpDlg::ClookUpDlg(wxWindow *parent, const wxString &windowTitle, const wxString &tableName,
wxChar *dispCol1, wxChar *dispCol2, wxChar *where, wxChar *orderBy, const wxString &dispCol1, const wxString &dispCol2,
const wxString &where, const wxString &orderBy,
wxDb *pDb, const wxString &defDir, bool distinctValues, wxDb *pDb, const wxString &defDir, bool distinctValues,
wxChar *selectStmt, int maxLenCol1, bool allowOk) const wxString &selectStmt, int maxLenCol1, bool allowOk)
: wxDialog (parent, LOOKUP_DIALOG, wxT("Select..."), wxDefaultPosition, wxSize(400, 290)) : wxDialog (parent, LOOKUP_DIALOG, wxT("Select..."), wxDefaultPosition, wxSize(400, 290))
{ {
wxBeginBusyCursor(); wxBeginBusyCursor();
@@ -278,10 +280,11 @@ ClookUpDlg::ClookUpDlg(wxWindow *parent, wxChar *windowTitle, wxChar *tableName,
widgetPtrsSet = false; widgetPtrsSet = false;
lookup = 0; lookup = 0;
lookup2 = 0; lookup2 = 0;
noDisplayCols = (wxStrlen(dispCol2) ? 2 : 1);
noDisplayCols = (dispCol2.Length() == 0 ? 1 : 2);
col1Len = 0; col1Len = 0;
wxFont fixedFont(12,wxMODERN,wxNORMAL,wxNORMAL); wxFont fixedFont(12, wxMODERN, wxNORMAL, wxNORMAL);
// this is done with fixed font so that the second column (if any) will be left // this is done with fixed font so that the second column (if any) will be left
// justified in the second column // justified in the second column
@@ -423,6 +426,13 @@ void ClookUpDlg::OnClose(wxCloseEvent& event)
} // ClookUpDlg::OnClose } // ClookUpDlg::OnClose
void ClookUpDlg::OnDClick( wxCommandEvent &event )
{
wxWindow *win = (wxWindow*) event.GetEventObject();
OnCommand( *win, event );
}
void ClookUpDlg::OnButton( wxCommandEvent &event ) void ClookUpDlg::OnButton( wxCommandEvent &event )
{ {
wxWindow *win = (wxWindow*) event.GetEventObject(); wxWindow *win = (wxWindow*) event.GetEventObject();
@@ -436,8 +446,15 @@ void ClookUpDlg::OnCommand(wxWindow& win, wxCommandEvent& WXUNUSED(event))
if (widgetPtrsSet) if (widgetPtrsSet)
{ {
bool doubleclick = false;
// Double click
if (widgetName == pLookUpSelectList->GetName())
{
doubleclick = true;
} // Double click
// OK Button // OK Button
if (widgetName == pLookUpOkBtn->GetName()) if (widgetName == pLookUpOkBtn->GetName() || doubleclick)
{ {
if (pLookUpSelectList->GetSelection() != -1) if (pLookUpSelectList->GetSelection() != -1)
{ {
@@ -472,6 +489,7 @@ void ClookUpDlg::OnCommand(wxWindow& win, wxCommandEvent& WXUNUSED(event))
wxStrcpy (ListDB_Selection2,wxT("")); wxStrcpy (ListDB_Selection2,wxT(""));
Close(); Close();
} // Cancel Button } // Cancel Button
} }
}; // ClookUpDlg::OnCommand }; // ClookUpDlg::OnCommand

View File

@@ -68,14 +68,14 @@ class ClookUpDlg : public wxDialog
public: public:
// This is a generic lookup constructor that will work with any table and any column // This is a generic lookup constructor that will work with any table and any column
ClookUpDlg(wxWindow *parent, ClookUpDlg(wxWindow *parent,
wxChar *windowTitle, const wxString &windowTitle,
wxChar *tableName, const wxString &tableName,
wxChar *colName, const wxString &colName,
wxChar *where, const wxString &where,
wxChar *orderBy, const wxString &orderBy,
wxDb *pDb, wxDb *pDb,
const wxString &defDir); const wxString &defDir);
// //
// This is a generic lookup constructor that will work with any table and any column. // This is a generic lookup constructor that will work with any table and any column.
@@ -102,23 +102,24 @@ class ClookUpDlg : public wxDialog
// in the lookup window. // in the lookup window.
// //
ClookUpDlg(wxWindow *parent, ClookUpDlg(wxWindow *parent,
wxChar *windowTitle, const wxString &windowTitle,
wxChar *tableName, const wxString &tableName,
wxChar *dispCol1, // Must have at least 1 display column const wxString &dispCol1, // Must have at least 1 display column
wxChar *dispCol2, // Optional const wxString &dispCol2, // Optional
wxChar *where, const wxString &where,
wxChar *orderBy, const wxString &orderBy,
wxDb *pDb, // Database connection pointer wxDb *pDb, // Database connection pointer
const wxString &defDir, const wxString &defDir,
bool distinctValues, // e.g. SELECT DISTINCT ... bool distinctValues, // e.g. SELECT DISTINCT ...
wxChar *selectStmt = 0, // If you wish to query by SQLstmt (complicated lookups) const wxString &selectStmt = wxEmptyString, // If you wish to query by SQLstmt (complicated lookups)
int maxLenCol1 = 0, // Mandatory if querying by SQLstmt int maxLenCol1 = 0, // Mandatory if querying by SQLstmt
bool allowOk = true); // is the OK button enabled bool allowOk = true); // is the OK button enabled
void OnButton( wxCommandEvent &event ); void OnButton(wxCommandEvent &event);
void OnCommand(wxWindow& win, wxCommandEvent& event); void OnCommand(wxWindow& win, wxCommandEvent& event);
void OnClose(wxCloseEvent& event); void OnClose(wxCloseEvent& event);
void OnActivate(bool) {}; // necessary for hot keys void OnActivate(bool) {}; // necessary for hot keys
void OnDClick(wxCommandEvent &event);
DECLARE_EVENT_TABLE() DECLARE_EVENT_TABLE()
}; // class ClookUpDlg }; // class ClookUpDlg