Как получить индексы выделенных строк?

Есть элемент wxDataViewListCtrl с включённым стилем wxDV_MULTIPLE (возможность выделять несколько строк). Необходимо выполнить обработку каждого выделенного элемента и знать его индекс.
С обработкой проблем нет, но как узнать индексы - не могу понять.
Для одного элемента возможно вызвать метод GetSelectedRow(), который возвращает индекс выделенной строки. Для набора выделения не подходит, т.к. возвращает значение "-1".
Есть методwxDataViewCtrl::GetSelections(wxDataViewItemArray &sel), который сохраняет выделенные элементы в отдельный массив. Как полагаю - индексы при этом теряются.
Также есть метод wxDataViewItem wxDataViewCtrl::GetSelection(), который возвращает первый выделенный элемент. Но, опять же, какой индекс этой строки?
  • Вопрос задан
  • 548 просмотров
Решения вопроса 1
froex
@froex Автор вопроса
Как всегда, после нескольких ночей мучений и публикации вопроса, созревает ответ почти сразу. Решил так, но, может, кто-то подскажет решение лучше?
// Количество выделенных элементов
const int itemCount = dataViewListCtrl1->GetSelectedItemsCount();
wxDataViewItemArray itemArray;
// Сохранение массива выделенных элементов
dataViewListCtrl1->GetSelections(itemArray);
for(int i = 0; i < itemCount; ++i) {
    // получение индекса элемента в первоначальном списке
    int row = dataViewListCtrl1->ItemToRow(itemArray[i]);
    // прочая обработка
    // ...
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы