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

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
User avatar
Oleg
Earned a small fee
Earned a small fee
Posts: 23
Joined: Wed May 25, 2016 8:07 pm
Location: Ukraine

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

Post by Oleg » Fri Jun 03, 2016 2:51 pm

Имеется ТОП сайзер в который добавляются все остальные сайзеры при добавлении, как мембер класса, сохраняется wxSizerItem* которому присваивается id.
id1.png
id1.png (35.16 KiB) Viewed 1353 times
Приходит момент когда мне нужно Удалить/Cпрятать и т.п. этот сайзер и я хочу это сделать по Id который я проставил раньше:
id2.png
id2.png (27.79 KiB) Viewed 1353 times
В результате чего я получаю вот такой алерт:
id3.png
Немогу понять в чем ошибка. Может я не правильно использую API?
Спасибо.

User avatar
doublemax
Moderator
Moderator
Posts: 13990
Joined: Fri Apr 21, 2006 8:03 pm
Location: $FCE2

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

Post by doublemax » Fri Jun 03, 2016 4:14 pm

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_ ).
Use the source, Luke!

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 3409
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

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

Post by ONEEYEMAN » Mon Jun 06, 2016 2:33 pm

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.

User avatar
Oleg
Earned a small fee
Earned a small fee
Posts: 23
Joined: Wed May 25, 2016 8:07 pm
Location: Ukraine

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

Post by Oleg » Tue Jun 07, 2016 2:08 pm

How can i get index of any sizer?
and
Where we should use id and index?

ONEEYEMAN
Part Of The Furniture
Part Of The Furniture
Posts: 3409
Joined: Sat Apr 16, 2005 7:22 am
Location: USA, Ukraine

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

Post by ONEEYEMAN » Tue Jun 07, 2016 2:18 pm

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!

User avatar
Oleg
Earned a small fee
Earned a small fee
Posts: 23
Joined: Wed May 25, 2016 8:07 pm
Location: Ukraine

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

Post by Oleg » Tue Jun 07, 2016 2:31 pm

Got it.
P.S. :D , cenks.

Post Reply