как достать wxListCtrl Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
Big_Lebowski
Knows some wx things
Knows some wx things
Posts: 49
Joined: Wed May 13, 2009 8:08 am

как достать wxListCtrl

Post by Big_Lebowski »

Всем привет, я новичек в wxWidgets,
не могу понять как мне получить доступ к свой свойствам дочернего объекта.

На пример, у меня есть MainFrame на ней wxBoxSizer в нем wxNoteBook а этом буке есть wxPanel в которой сидит еще один wxBoxSizer а в нем уже сидит главная цель всего кода wxListCtrl.
В другом wxBoxSizer-е на этой же панеле wxPanel есть кнопка wxButton нажав на которую я хочу изменить свойства wxListBox

допустим я хочу добавить еще одну колонку в wxListCtrl:

Code: Select all

m_listCtrl1->InsertColumn(0, wxT("Новая колонка"), wxLIST_FORMAT_LEFT, 80);
этот код я раньше вставлял в обработчик событий (по нажатию кнопки ОК) и он работал, но сейчас у меня появилось прмежуточное звено wxNoteBook и теперь добраться до wxListCtrl не могу.....

Подскажите как мне получить доступ к родительскому объекту?

Спасибо
Wintermute
Knows some wx things
Knows some wx things
Posts: 38
Joined: Tue May 26, 2009 8:39 am
Location: Moscow, Russia
Contact:

Post by Wintermute »

Привет-привет.

Вообще говоря, я сейчас пишу небольшую утилитку, в основном окне которого как раз такая же схема элементов (в том числе wxListCtrl). И все действия у меня прописаны в статической таблице событий основного фрейма.
Я так полагаю, проблема не в том, что ты "не можешь добраться" до wxListCtrl (ведь ты просто ссылку на него хранишь как свойство объекта своего фрейма), а в том, что обработчик событий не вызывается больше. Может быть в другой вкладке у тебя есть кнопка с точно таким же Id (указывается вторым параметром). Либо (не исключено и такое) ты поменял идентификатор кнопки в таблице событий, но не поменял параметр при создании кнопки.
Попробуй поставить, например, в свой обработчик

Code: Select all

wxMessageBox(_("test"), _("test"), wxOK);
или лучше

Code: Select all

wxLogMessage(_("test"))
FAQ
1. What the ... ?
2. Again what the ... ?
Big_Lebowski
Knows some wx things
Knows some wx things
Posts: 49
Joined: Wed May 13, 2009 8:08 am

Post by Big_Lebowski »

Wintermute wrote:Привет-привет.

Вообще говоря, я сейчас пишу небольшую утилитку, в основном окне которого как раз такая же схема элементов (в том числе wxListCtrl). И все действия у меня прописаны в статической таблице событий основного фрейма.
Я так полагаю, проблема не в том, что ты "не можешь добраться" до wxListCtrl (ведь ты просто ссылку на него хранишь как свойство объекта своего фрейма), а в том, что обработчик событий не вызывается больше. Может быть в другой вкладке у тебя есть кнопка с точно таким же Id (указывается вторым параметром). Либо (не исключено и такое) ты поменял идентификатор кнопки в таблице событий, но не поменял параметр при создании кнопки.
Попробуй поставить, например, в свой обработчик

Code: Select all

wxMessageBox(_("test"), _("test"), wxOK);
или лучше

Code: Select all

wxLogMessage(_("test"))

Дело в том, что у меня таблицы событий вообще нет, все события я увязал через Connect(), а вот по поводу ID кнопки это идея, как я раньше не догадался, кнопок у меня 8 штук и за идентификаторы забыл.... попытаюсь покопаться в идентификаторах, о результатах сообщу.

Спасибо!
Big_Lebowski
Knows some wx things
Knows some wx things
Posts: 49
Joined: Wed May 13, 2009 8:08 am

Post by Big_Lebowski »

Разобрался.... проблема была не wxListCtrl, а в ошибке при определении wxApp, формы я делал в формбилдере, там интерфейс в отдельном файле а главный фрейм с обработчиками в другом файле.... дак вот при инициализации wxApp нужно было указывать фрейм производный от дочернего класса интерфейса, а я указал непосредственно фрейм интрефейса..... в результате чего я немог добраться ни до wxListCtrl ни вообще не до чего, хотя компилировалось все ОК.
Post Reply