Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void MyFrame::CreateControls()
- {
- //Adding menu and menu items . To add menu items add your code here.
- wxBoxSizer *mainsizer = new wxBoxSizer( wxVERTICAL);
- wxBoxSizer *button_sizer = new wxBoxSizer( wxHORIZONTAL );
- button_sizer->Add(
- new wxButton( this, wxID_LOAD, "Load" ),
- 0, // make horizontally unstretchable
- wxALL, // make border all around (implicit top alignment)
- 10 ); // set border width to 10
- button_sizer->Add(
- new wxButton( this, wxID_CANCEL, "Cancel" ),
- 0, // make horizontally unstretchable
- wxALL, // make border all around (implicit top alignment)
- 10 ); // set border width to 10
- wxBoxSizer *tree_sizer = new wxBoxSizer( wxHORIZONTAL );
- tree = new MyTreeCtrl(this, wxID_TREE,
- wxDefaultPosition, wxSize(250,300),
- wxTR_DEFAULT_STYLE);
- tree->mypanel = new MyPanel(this,wxID_PANEL,wxDefaultPosition,wxSize(250,250),wxTAB_TRAVERSAL|wxBORDER_SUNKEN);
- tree_sizer->Add(tree,1,wxEXPAND | // make horizontally stretchable
- wxALL|wxALIGN_LEFT, // and make border all around
- 10);
- tree_sizer->Add(tree->mypanel,1,wxEXPAND | // make horizontally stretchable
- wxALL|wxALIGN_LEFT, // and make border all around
- 10);
- mainsizer->Add(tree_sizer,1, // make vertically stretchable
- wxEXPAND | // make horizontally stretchable
- wxALL|wxALIGN_CENTRE, // and make border all around
- 10);
- mainsizer->Add(
- button_sizer,
- 0, // make vertically unstretchable
- wxALIGN_CENTRE ); // no border and allign right
- SetSizer(mainsizer ); // use the sizer for layout
- this->Refresh(true);
- this->Show(true);
- };
- void MyTreeCtrl::OnSelChanged(wxTreeEvent& event)
- {
- wxTreeItemId itemId = event.GetItem();
- this->SetEventItemId(itemId);
- wxString name=this->GetItemText(itemId);
- wxTreeItemData *data=new MyData();
- MyData* tData;
- data=this->GetItemData(itemId);
- tData = dynamic_cast<MyData*>(data);
- wxTreeItemId rootid = this->GetRootItem();
- if (itemId == rootid)
- {
- this->PopulateTextNode();
- }
- else if (tData->type == wxXML_ELEMENT_NODE)
- {
- this->PopulateElementNode(itemId);
- }
- else
- this->PopulateTextNode();
- }
- 1.
- void MyTreeCtrl::PopulateElementNode(wxTreeItemId &id)
- 2.
- {
- 3.
- 4.
- //adding panel control elements and setting its sizer
- 5.
- 6.
- //the next two lines do not work . A MyTreeCtrl and a MyPanel are children of MyFrame ,which is the top level window. A MyPanel object exists inside MyTreeCtrl Class.An event on a node in the tree should populate the panel.I am setting a sizer with the panel ,but it does not get set. The sizer for the toplevel frame was set at a different place before this event.
- 7.
- 8.
- wxBoxSizer *paneltopsizer = new wxBoxSizer(wxVERTICAL);
- 9.
- (this->mypanel)->SetSizer(paneltopsizer);
- 10.
- 11.
- 12.
- this->MyListCtrl=new wxListCtrl(this->mypanel,
- 13.
- wxID_LISTCTRL,wxDefaultPosition,wxSize(245,100),wxLC_REPORT);
- 14.
- wxButton *Add=new wxButton(this->mypanel,wxID_ADD,wxT("Add"));
- 15.
- *Delete=new wxButton(this->mypanel,wxID_DELETE,wxT("Delete"));
- 16.
- wxButton *ApplyChanges=new wxButton(this->mypanel,wxID_APPLYCHANGES,wxT("ApplyChanges"));
- 17.
- 18.
- wxBoxSizer *panelbuttonsizer = new wxBoxSizer(wxHORIZONTAL);
- 19.
- panelbuttonsizer->Add(Add,0,wxALL|wxALIGN_RIGHT,5);
- 20.
- panelbuttonsizer->Add(Delete,0,wxALL|wxALIGN_RIGHT,5);
- 21.
- panelbuttonsizer->Add(ApplyChanges,0,wxALL|wxALIGN_RIGHT,5);
- 22.
- paneltopsizer->Add(this->MyListCtrl,1,wxALL|wxEXPAND,10);
- 23.
- paneltopsizer->Add(panelbuttonsizer,0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
- 24.
- 25.
- //panel control ends
- 26.
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement