Page 1 of 1
wxSizer ошибка при удалении по индексу.
Posted: Fri Jun 03, 2016 2:51 pm
by Oleg
Имеется ТОП сайзер в который добавляются все остальные сайзеры при добавлении, как мембер класса, сохраняется wxSizerItem* которому присваивается id.
- id1.png (35.16 KiB) Viewed 2703 times
Приходит момент когда мне нужно Удалить/Cпрятать и т.п. этот сайзер и я хочу это сделать по Id который я проставил раньше:
- id2.png (27.79 KiB) Viewed 2703 times
В результате чего я получаю вот такой алерт:
Немогу понять в чем ошибка. Может я не правильно использую API?
Спасибо.
Re: wxSizer ошибка при удалении по индексу.
Posted: Fri Jun 03, 2016 4:14 pm
by doublemax
wxSizer::Show() takes an index as parameter, not an ID.
You could use wxSizer::GetItemById() to get a pointer to the wxSizerItem.
But i think this is too complicated, i'd just store "activitySizer_" in a member variable and then call topSizer_->Show( activitySizer_ ).
Re: wxSizer ошибка при удалении по индексу.
Posted: Mon Jun 06, 2016 2:33 pm
by ONEEYEMAN
Oleg,
Just remember that sizer is not a window and threfore does not need an ID.
Follow doublemax' suggestion and everything will work as expected.
If not please post here.
Thank you.
Re: wxSizer ошибка при удалении по индексу.
Posted: Tue Jun 07, 2016 2:08 pm
by Oleg
How can i get index of any sizer?
and
Where we should use id and index?
Re: wxSizer ошибка при удалении по индексу.
Posted: Tue Jun 07, 2016 2:18 pm
by ONEEYEMAN
Oleg,
Kak skazal doublemax - zabud pro id.
Prosto sohrani pointer to sizer v svoem klasse.
Something like this:
Code: Select all
class DownloadPanel : public wxWindow
{
public:
DownloadPanel();
private:
wxSizer *m_activityItem;
};
DownloadPanel::DownloadPanel()
{
m_activityItem = new wxBoxSizer();
}
Thank you.
P.S.: Don't forget - you don't need to delete the sizer! It will be done by the library for you!
Re: wxSizer ошибка при удалении по индексу.
Posted: Tue Jun 07, 2016 2:31 pm
by Oleg
Got it.
P.S.
, cenks.