It's more convenient to have the string to search for directly in the event
object than to retrieve it from wxSearchCtrl itself as it had to be done
before.
Closes #4665.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64886
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
just as you would with wxTextCtrl.
@event{EVT_SEARCHCTRL_SEARCH_BTN(id, func)}
Respond to a wxEVT_SEARCHCTRL_SEARCH_BTN event, generated when the
- search button is clicked. Note that this does not initiate a search.
+ search button is clicked. Note that this does not initiate a search on
+ its own, you need to perform the appropriate action in your event
+ handler. You may use @code event.GetString() @endcode to retrieve the
+ string to search for in the event handler code.
@event{EVT_SEARCHCTRL_CANCEL_BTN(id, func)}
Respond to a wxEVT_SEARCHCTRL_CANCEL_BTN event, generated when the
cancel button is clicked.
void OnToggleCancelButton(wxCommandEvent&);
void OnToggleSearchMenu(wxCommandEvent&);
+ void OnSearch(wxCommandEvent& event);
+
wxMenu* CreateTestMenu();
// (re)create the control
EVT_CHECKBOX(ID_SEARCH_CB, SearchCtrlWidgetsPage::OnToggleSearchButton)
EVT_CHECKBOX(ID_CANCEL_CB, SearchCtrlWidgetsPage::OnToggleCancelButton)
EVT_CHECKBOX(ID_MENU_CB, SearchCtrlWidgetsPage::OnToggleSearchMenu)
+
+ EVT_SEARCHCTRL_SEARCH_BTN(wxID_ANY, SearchCtrlWidgetsPage::OnSearch)
END_EVENT_TABLE()
// ============================================================================
m_srchCtrl->SetMenu(NULL);
}
+void SearchCtrlWidgetsPage::OnSearch(wxCommandEvent& event)
+{
+ wxLogMessage("Search button: search for \"%s\".", event.GetString());
+}
#endif // wxUSE_SEARCHCTRL
wxCommandEvent event(m_eventType, m_search->GetId());
event.SetEventObject(m_search);
+ if ( m_eventType == wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN )
+ {
+ // it's convenient to have the string to search for directly in the
+ // event instead of having to retrieve it from the control in the
+ // event handler code later, so provide it here
+ event.SetString(m_search->GetValue());
+ }
+
GetEventHandler()->ProcessEvent(event);
m_search->SetFocus();
{
wxCommandEvent event(wxEVT_COMMAND_SEARCHCTRL_SEARCH_BTN, m_windowId );
event.SetEventObject(this);
+
+ // provide the string to search for directly in the event, this is more
+ // convenient than retrieving it from the control in event handler code
+ event.SetString(GetValue());
+
return ProcessCommand(event);
}