У меня есть верхний уровень (класс MyFrame), у которого есть дочернее дерево (класс MyTreeCtrl) и дочерняя панель (класс MyPanel). Объект MyPanel существует в MyTreeCtrl. Событие на узле в дереве должно заполнить панель. Я устанавливаю sizer с панелью, но она не устанавливается. Когда sizer установлен на панель при установке sizer для его родительского кадра, все в порядке. Но при попытке установить панель sizer в отдельной функции это не сработает.wxsizer не работает на дочерней панели при добавлении после события (wxwidgets 2.8, windows xp)
void MyTreeCtrl::PopulateElementNode(wxTreeItemId &id)
{
//adding panel control elements and setting its sizer
wxBoxSizer *paneltopsizer = new wxBoxSizer(wxVERTICAL);
(this->mypanel)->SetSizer(paneltopsizer);
this->MyListCtrl=new wxListCtrl(this->mypanel,
wxID_LISTCTRL,wxDefaultPosition,wxSize(245,100),wxLC_REPORT);
wxButton *Add=new wxButton(this->mypanel,wxID_ADD,wxT("Add"));
wxButton *Delete=new wxButton(this->mypanel,wxID_DELETE,wxT("Delete"));
wxButton *ApplyChanges=new wxButton(this->mypanel,wxID_APPLYCHANGES,wxT("ApplyChanges"));
wxBoxSizer *panelbuttonsizer = new wxBoxSizer(wxHORIZONTAL);
panelbuttonsizer->Add(Add,0,wxALL|wxALIGN_RIGHT,5);
panelbuttonsizer->Add(Delete,0,wxALL|wxALIGN_RIGHT,5);
panelbuttonsizer->Add(ApplyChanges,0,wxALL|wxALIGN_RIGHT,5);
paneltopsizer->Add(this->MyListCtrl,1,wxALL|wxEXPAND,10);
paneltopsizer->Add(panelbuttonsizer,0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
//panel control ends
}
Я пытаюсь создать XML-редактор на основе дерева. Первоначально панель не установлена с помощью sizer. Я намерен сохранить это до события на узле в дереве. Только когда пользователь выбирает узел, необходимо установить sizer, а панель заполняется его дочерними элементами. – shimna
С моим существующим кодом на панели отображается только listctrl (0,0). Когда я даю paneltopsizer-> Layout() в конце void MyTreeCtrl :: PopulateElementNode(), на панели появляется мигание, и оно остается открытым. – shimna
Когда пользователь выбирает узел, панель должна заполняться данными для этого узла - нормально, отлично. Эта панель может быть всплывающей или может быть постоянной панелью в окне приложения. В любом случае он НЕ должен быть дочерним элементом дерева. IMHO, пытаясь сделать панель, содержащую детали выбранного дерева, дочерним элементом управления деревом, не вызовет вас конца. – ravenspoint