Page 1 of 1

SetFocus в wxListCtrl

Posted: Tue Sep 25, 2012 9:08 am
by zhim
Друзья, очень простая задача. Установить фокус на новом 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();
Фокус устанавливается не на новой записи, а на записи, на которой последний раз щёлкнули.

Re: SetFocus в wxListCtrl

Posted: Tue Sep 25, 2012 11:10 am
by bishop.gis
Насчет фокуса не уверен, а новую запись выделенной делаю так:

Code: Select all

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

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

Re: SetFocus в wxListCtrl

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