MyPanel implementation
Code: Select all
//(*IdInit(MyPanel)
const long MyPanel::ID_STATICTEXT1 = wxNewId();
const long MyPanel::ID_TEXTCTRL1 = wxNewId();
//*)
BEGIN_EVENT_TABLE(MyPanel,wxPanel)
//(*EventTable(MyPanel)
//*)
END_EVENT_TABLE()
MyPanel::MyPanel(wxWindow* parent, const wxString& l, wxWindowID id,const wxPoint& pos,const wxSize& size)
{
//(*Initialize(MyPanel)
Create(parent, id, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("id"));
BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
label = new wxStaticText(this, ID_STATICTEXT1, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, _T("ID_STATICTEXT1"));
BoxSizer1->Add(label, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
valueCtrl = new wxTextCtrl(this, ID_TEXTCTRL1, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
BoxSizer1->Add(valueCtrl, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
SetSizer(BoxSizer1);
BoxSizer1->Fit(this);
BoxSizer1->SetSizeHints(this);
Connect(ID_TEXTCTRL1,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&MyPanel::OnvalueCtrlTextEnter);
//*)
valueCtrl->Bind(wxEVT_KILL_FOCUS, &MyPanel::OnKillFocus, this);
label->SetLabel(l);
wxFloatingPointValidator<float> val(3, &value, wxNUM_VAL_ZERO_AS_BLANK);
val.SetRange(-10000, 10000);
valueCtrl->SetValidator(val);
}
MyPanel::~MyPanel()
{
//(*Destroy(MyPanel)
//*)
}
void MyPanel::OnvalueCtrlTextEnter(wxCommandEvent& event)
{
TransferDataFromWindow();
wxLogMessage("%s=%.3f", label->GetLabel(), value);
event.Skip();
}
void MyPanel::OnKillFocus(wxFocusEvent& event)
{
TransferDataFromWindow();
wxLogMessage("%s=%.3f", label->GetLabel(), value);
event.Skip();
}
Code: Select all
//(*IdInit(MyFrame)
const long MyFrame::ID_CUSTOM1 = wxNewId();
const long MyFrame::ID_CUSTOM2 = wxNewId();
const long MyFrame::ID_CUSTOM3 = wxNewId();
const long MyFrame::ID_PANEL2 = wxNewId();
const long MyFrame::ID_TEXTCTRL1 = wxNewId();
const long MyFrame::ID_PANEL1 = wxNewId();
const long MyFrame::ID_NOTEBOOK1 = wxNewId();
//*)
BEGIN_EVENT_TABLE(MyFrame,wxFrame)
//(*EventTable(MyFrame)
//*)
END_EVENT_TABLE()
MyFrame::MyFrame(wxWindow* parent,wxWindowID id)
{
//(*Initialize(MyFrame)
Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("id"));
SetClientSize(wxSize(640,480));
BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
Notebook1 = new wxNotebook(this, ID_NOTEBOOK1, wxDefaultPosition, wxDefaultSize, 0, _T("ID_NOTEBOOK1"));
Panel1 = new wxPanel(Notebook1, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1"));
BoxSizer2 = new wxBoxSizer(wxVERTICAL);
Panel2 = new wxPanel(Panel1, ID_PANEL2, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL2"));
BoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
Custom1 = new MyPanel(Panel2, "X");
BoxSizer3->Add(Custom1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
Custom2 = new MyPanel(Panel2, "Y");
BoxSizer3->Add(Custom2, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
Custom3 = new MyPanel(Panel2, "Z");
BoxSizer3->Add(Custom3, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
Panel2->SetSizer(BoxSizer3);
BoxSizer3->Fit(Panel2);
BoxSizer3->SetSizeHints(Panel2);
BoxSizer2->Add(Panel2, 1, wxEXPAND, 5);
TextCtrl1 = new wxTextCtrl(Panel1, ID_TEXTCTRL1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE|wxTE_READONLY, wxDefaultValidator, _T("ID_TEXTCTRL1"));
BoxSizer2->Add(TextCtrl1, 9, wxEXPAND, 5);
Panel1->SetSizer(BoxSizer2);
BoxSizer2->Fit(Panel1);
BoxSizer2->SetSizeHints(Panel1);
Notebook1->AddPage(Panel1, _("Page name"), false);
BoxSizer1->Add(Notebook1, 1, wxEXPAND, 5);
SetSizer(BoxSizer1);
SetSizer(BoxSizer1);
Layout();
//*)
wxLog::SetActiveTarget(new wxLogTextCtrl(TextCtrl1));
}
With Tab it worcks, but once the cursor is inside the loger textCtrl it can´t be mooved using Tab.