class wxSpinCtrlText : public wxTextCtrl
{
public:
- wxSpinCtrlText(wxSpinCtrl *spin, const wxString& value)
- : wxTextCtrl(spin , wxID_ANY, value, wxDefaultPosition, wxSize(40, wxDefaultCoord))
+ wxSpinCtrlText(wxSpinCtrl *spin, const wxString& value, int style)
+ : wxTextCtrl(spin , wxID_ANY, value, wxDefaultPosition, wxSize(40, wxDefaultCoord), style )
{
m_spin = spin;
}
protected:
+ void OnSetFocus(wxFocusEvent& event)
+ {
+ // delegate to parent control
+ event.SetEventObject( GetParent() );
+ GetParent()->HandleWindowEvent(event);
+ }
+
void OnKillFocus(wxFocusEvent& event)
{
long l;
m_spin->m_oldValue = l;
}
-
+
+ // delegate to parent control
event.SetEventObject( GetParent() );
GetParent()->HandleWindowEvent(event);
}
BEGIN_EVENT_TABLE(wxSpinCtrlText, wxTextCtrl)
EVT_TEXT(wxID_ANY, wxSpinCtrlText::OnTextChange)
- EVT_KILL_FOCUS( wxSpinCtrlText::OnKillFocus)
+ EVT_SET_FOCUS(wxSpinCtrlText::OnSetFocus)
+ EVT_KILL_FOCUS(wxSpinCtrlText::OnKillFocus)
END_EVENT_TABLE()
// ----------------------------------------------------------------------------
}
wxSize csize = size ;
- m_text = new wxSpinCtrlText(this, value);
+ m_text = new wxSpinCtrlText(this, value, style & ( wxTE_PROCESS_ENTER | wxALIGN_MASK ) );
m_btn = new wxSpinCtrlButton(this, style);
m_btn->SetRange(min, max);
void wxSpinCtrl::SetTextValue(int val)
{
- wxCHECK_RET( m_text, _T("invalid call to wxSpinCtrl::SetTextValue") );
+ wxCHECK_RET( m_text, wxT("invalid call to wxSpinCtrl::SetTextValue") );
- m_text->SetValue(wxString::Format(_T("%d"), val));
+ m_text->SetValue(wxString::Format(wxT("%d"), val));
// select all text
m_text->SetSelection(0, -1);
+ m_text->SetInsertionPointEnd();
+
// and give focus to the control!
// m_text->SetFocus(); Why???? TODO.
}
void wxSpinCtrl::SetValue(int val)
{
- wxCHECK_RET( m_btn, _T("invalid call to wxSpinCtrl::SetValue") );
+ wxCHECK_RET( m_btn, wxT("invalid call to wxSpinCtrl::SetValue") );
SetTextValue(val);
void wxSpinCtrl::SetValue(const wxString& text)
{
- wxCHECK_RET( m_text, _T("invalid call to wxSpinCtrl::SetValue") );
+ wxCHECK_RET( m_text, wxT("invalid call to wxSpinCtrl::SetValue") );
long val;
if ( text.ToLong(&val) && ((val > INT_MIN) && (val < INT_MAX)) )
void wxSpinCtrl::SetRange(int min, int max)
{
- wxCHECK_RET( m_btn, _T("invalid call to wxSpinCtrl::SetRange") );
+ wxCHECK_RET( m_btn, wxT("invalid call to wxSpinCtrl::SetRange") );
m_btn->SetRange(min, max);
}