Page 1 of 1

wxSizer ошибка при удалении по индексу.

Posted: Fri Jun 03, 2016 2:51 pm
by Oleg
Имеется ТОП сайзер в который добавляются все остальные сайзеры при добавлении, как мембер класса, сохраняется wxSizerItem* которому присваивается id.
id1.png
id1.png (35.16 KiB) Viewed 2703 times
Приходит момент когда мне нужно Удалить/Cпрятать и т.п. этот сайзер и я хочу это сделать по Id который я проставил раньше:
id2.png
id2.png (27.79 KiB) Viewed 2703 times
В результате чего я получаю вот такой алерт:
id3.png
Немогу понять в чем ошибка. Может я не правильно использую 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. :D , cenks.