Use wxPanel as controls parent in wrapsizer sample.

Follow our own advice about never creating controls directly on the frame and
using an intermediate wxPanel in our own sample. This is better style and
makes it look better under Windows.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65239 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2010-08-10 21:48:22 +00:00
parent d931703342
commit 27607839f1

View File

@@ -52,7 +52,7 @@ private:
wxToolBar *MakeToolBar() wxToolBar *MakeToolBar()
{ {
wxToolBar *tb = new wxToolBar(this, wxID_ANY, wxToolBar *tb = new wxToolBar(m_panel, wxID_ANY,
wxDefaultPosition, wxDefaultSize, wxDefaultPosition, wxDefaultSize,
wxTB_NODIVIDER); wxTB_NODIVIDER);
AddToolBarButton(tb, "Help", wxART_HELP_BOOK); AddToolBarButton(tb, "Help", wxART_HELP_BOOK);
@@ -65,6 +65,8 @@ private:
tb->Realize( ); tb->Realize( );
return tb; return tb;
} }
wxPanel *m_panel;
}; };
class WrapSizerApp : public wxApp class WrapSizerApp : public wxApp
@@ -91,6 +93,8 @@ WrapSizerFrame::WrapSizerFrame()
{ {
SetIcon(wxICON(sample)); SetIcon(wxICON(sample));
m_panel = new wxPanel(this);
// Root sizer, vertical // Root sizer, vertical
wxSizer * const sizerRoot = new wxBoxSizer(wxVERTICAL); wxSizer * const sizerRoot = new wxBoxSizer(wxVERTICAL);
@@ -104,14 +108,14 @@ WrapSizerFrame::WrapSizerFrame()
sizerRoot->Add(sizerTop, wxSizerFlags().Expand().Border()); sizerRoot->Add(sizerTop, wxSizerFlags().Expand().Border());
// A number of checkboxes inside a wrap sizer // A number of checkboxes inside a wrap sizer
wxSizer *sizerMid = new wxStaticBoxSizer(wxVERTICAL, this, wxSizer *sizerMid = new wxStaticBoxSizer(wxVERTICAL, m_panel,
"With check-boxes"); "With check-boxes");
wxSizer * const sizerMidWrap = new wxWrapSizer(wxHORIZONTAL); wxSizer * const sizerMidWrap = new wxWrapSizer(wxHORIZONTAL);
for ( int nCheck = 0; nCheck < 6; nCheck++ ) for ( int nCheck = 0; nCheck < 6; nCheck++ )
{ {
wxCheckBox *chk = new wxCheckBox wxCheckBox *chk = new wxCheckBox
( (
this, m_panel,
wxID_ANY, wxID_ANY,
wxString::Format("Option %d", nCheck) wxString::Format("Option %d", nCheck)
); );
@@ -124,28 +128,28 @@ WrapSizerFrame::WrapSizerFrame()
// A shaped item inside a box sizer // A shaped item inside a box sizer
wxSizer *sizerBottom = new wxStaticBoxSizer(wxVERTICAL, this, wxSizer *sizerBottom = new wxStaticBoxSizer(wxVERTICAL, m_panel,
"With wxSHAPED item"); "With wxSHAPED item");
wxSizer *sizerBottomBox = new wxBoxSizer(wxHORIZONTAL); wxSizer *sizerBottomBox = new wxBoxSizer(wxHORIZONTAL);
sizerBottom->Add(sizerBottomBox, wxSizerFlags(100).Expand()); sizerBottom->Add(sizerBottomBox, wxSizerFlags(100).Expand());
sizerBottomBox->Add(new wxListBox(this, wxID_ANY, sizerBottomBox->Add(new wxListBox(m_panel, wxID_ANY,
wxPoint(0, 0), wxSize(70, 70)), wxPoint(0, 0), wxSize(70, 70)),
wxSizerFlags().Expand().Shaped()); wxSizerFlags().Expand().Shaped());
sizerBottomBox->AddSpacer(10); sizerBottomBox->AddSpacer(10);
sizerBottomBox->Add(new wxCheckBox(this, wxID_ANY, sizerBottomBox->Add(new wxCheckBox(m_panel, wxID_ANY,
"A much longer option..."), "A much longer option..."),
wxSizerFlags(100).Border()); wxSizerFlags(100).Border());
sizerRoot->Add(sizerBottom, wxSizerFlags(100).Expand().Border()); sizerRoot->Add(sizerBottom, wxSizerFlags(100).Expand().Border());
// OK Button // OK Button
sizerRoot->Add(new wxButton(this, wxID_OK), sizerRoot->Add(new wxButton(m_panel, wxID_OK),
wxSizerFlags().Centre().DoubleBorder()); wxSizerFlags().Centre().DoubleBorder());
Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED, Connect(wxID_OK, wxEVT_COMMAND_BUTTON_CLICKED,
wxCommandEventHandler(WrapSizerFrame::OnButton)); wxCommandEventHandler(WrapSizerFrame::OnButton));
// Set sizer for window // Set sizer for the panel
SetSizerAndFit(sizerRoot); m_panel->SetSizer(sizerRoot);
Show(); Show();
} }