SetFocus в wxListCtrl Topic is solved

Это русская секция форума wxWidjets. В этой секции вы можете обсуждать любые вопросы, связанные с wxWidgets на вашем родном языке.
Post Reply
zhim
In need of some credit
In need of some credit
Posts: 2
Joined: Tue Sep 25, 2012 8:27 am

SetFocus в wxListCtrl

Post by zhim » Tue Sep 25, 2012 9:08 am

Друзья, очень простая задача. Установить фокус на новом item в wxListCtrl. По нажатию правой кнопки мыши совершаем добавление и устанавливаем фокус следующим куском кода:

Code: Select all

	listCtrl->SetFocus();
        listCtrl->SetItemState(new_item_index, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED,      wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED);
	listCtrl->Refresh();
        event.Skip();
Фокус устанавливается не на новой записи, а на записи, на которой последний раз щёлкнули.

User avatar
bishop.gis
Earned a small fee
Earned a small fee
Posts: 20
Joined: Fri May 25, 2012 6:47 pm

Re: SetFocus в wxListCtrl

Post by bishop.gis » Tue Sep 25, 2012 11:10 am

Насчет фокуса не уверен, а новую запись выделенной делаю так:

Code: Select all

SetItemState(item, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED);
Причем без Refresh. Однако поведение под Win/Lin может отличаться.

Зачем вам SetFocus нужен?

zhim
In need of some credit
In need of some credit
Posts: 2
Joined: Tue Sep 25, 2012 8:27 am

Re: SetFocus в wxListCtrl

Post by zhim » Tue Sep 25, 2012 3:58 pm

wxLIST_STATE_FOCUSED нужен для перемещения в часть списка с новым выделенным элементом. SetFocus() вообще не в тему упомянут, я извиняюсь.
SetItemState(item, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); замечательно работает, и выставляет флаг в нужный элемент списка. Проблема была в вызове event.Skip() в обработчике мыши, которая "тянула обработчик от wxListCtrl" и губила на корню все усилия SetItemState. Будьте осторожны со Skip-ом товарищи!

Post Reply