![]() |
|
|
![]()
|
|
| Homer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 29.12.2004 Репутация: нет Всего: нет |
Как в списке выделить элемент програмно (по приходе сообщение например)? вроде бы должно работать с SetSelectionMark, но ничего не выходит
|
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 1 Всего: 191 |
Попробуй такой вариант:
m_list.SetSel( -1,FALSE );//сброс всего выделенного i=-1;//т.к. начинается выделение не с 0 а с -1 m_listBox.SetSel(i,true);//непосредственно выделение m_listBox.GetCurSel()//для того чтобы получить выделенную строку ПЭ.ЭС. Сформулируй вопрос по понятнее!!!!!!!!!!! |
|||
|
||||
| Homer |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 29.12.2004 Репутация: нет Всего: нет |
Это по-моему для CListBox, а мне надо для CListCtrl. Вопрос же в том, что мне нужно осуществить поиск в списке из другого диалогого окна, т.е. при нажатии ОК в диалоговом окне выделялась соответствующая (найденная) запись в списке.
|
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: 1 Всего: 191 |
Дело в том , что я с ListCtrl мало работаю ,в основном ListBox
Может быть так: if (ListCtrl.GetSelectionMark() == -1) ListCtrl.SetSelectionMark(i); Это должно сработать ,только если нет выделенного текста в данный момент. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Вот так:
Это сообщение отредактировал(а) Earnest - 20.11.2006, 10:48 -------------------- ... |
|||
|
||||
| sm4sh |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 22.2.2007 Репутация: нет Всего: нет |
Спасибо, это работает. Самого давно этот вопрос интересовал. Спрашивается, зачем тогда SetSelectionMark вообще? Но к тебе у меня другой вопрос. Ситуация такая же - осуществляется поиск с диалогового окошка. Но если у меня в поле видимости уже есть выделенный элемент, то появится второй, который помечу уже я. Как этого избежать? К тому же в моей программе можно выделять несколько элементов. Вытекает 2 вопроса: 1. Как узнать индекс начального и конечного текущего видимого элемента? В мсдне видел функцию GetCountPerPage. А дальше как? Искать с нуля первый элемент, который видно и обновлять с него до последнего видимого? Как-то коряво... Еще появилась идея снимать выделение со ВСЕХ ранее помеченных с помощью функций GetFirstSelectedItemPosition и GetNextSelectedItem. Но тоже не идеально... Есть предложения на этот счет? 2. Какие параметры в SetItemState нужно задать, чтобы снять выделение? Заранее благодарен. Это сообщение отредактировал(а) sm4sh - 22.2.2007, 09:41 |
||||
|
|||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 4 Всего: 44 |
что бы не выделялась куча итемов создай свой лист со стилем LVS_SINGLESEL.
что бы снять выделения достаточно вроде SetItemState (nItem, 0, LVIS_SELECTED) на счет перебрать все выделеные вот есть даже пример в мсдн:
|
|||
|
||||
| sm4sh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 22.2.2007 Репутация: нет Всего: нет |
chaos, я уже так и сделал. Думал, красИвее есть метод
Это сообщение отредактировал(а) sm4sh - 22.2.2007, 13:06 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
В чем вопрос-то?
chaos все правильно написал - нет другого способа. Если поставишь LVS_SINGLESEL, то при выборе итема выделение с другого будет автоматически сниматься, а нет - так все под твою ответственность. Я обычно бы еще, для удобства, сделала функцию GetSelection, возвращающую номера всех выделенных элементов, чтобы локализовать код в одном месте:
Выделенные итемы можно удалять, менять им всем состояние, собирать свойства... да мало ли что еще. -------------------- ... |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |