Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Запарка с CListCtrl


Автор: RSV 26.2.2006, 19:48
Для работы с базой данных использую CListCtrl
со свойством Report. Как сделать, чтобы при
поиске строк выделялся найденный элемент.
Пробывал:
CListCtrl m_list;

1. m_list.SetItemState(n, LVIS_SELECTED, LVIS_SELECTED);
2. m_list.SetSelectionMark(n);
3. m_list.SetView(n);
Где n это индекс. Ни один из вариантов не работает.
Может я где то ошибаюсь.Заранее спасибо за ответ.


Автор: Earnest 26.2.2006, 20:31
Должен работать вариант 1 - SetItemState. Остальные - из другой оперы. Только недостаточно изменить состояние, нужно еще перерисовать. Например, так:
Код

CRect rItem;
GetItemRect (n,rItem,LVIR_BOUNDS);
InvalidateRect(rItem);

Автор: AlexPro 27.2.2006, 01:37
Если выделяется единственный элемент, я делаю так:
Код

m_list.SetItemState(n,LVIS_SELECTED|LVIS_FOCUSED, LVIS_SELECTED|LVIS_FOCUSED);

И еще желательно
Код

m_list.EnsureVisible(т,TRUE);

чтобы строка оказалась в области видимости (когда все элементы не влазят на экран).

Автор: voff 30.4.2006, 22:48
Ещё не плохо было бы фокус на лист поставить, чтобы строка синим цветом выделилась ( m_list.SetFocus() ). Да и свойство у листа Always Show Selection установить в TRUE. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)