powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VISUAL C++ 6.0 , Control of class CListCtrl
16 сообщений из 16, страница 1 из 1
VISUAL C++ 6.0 , Control of class CListCtrl
    #32582475
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, пожалуйста, как программно в контроле CListCtrl выделить , допустим, 300-ю строкуКонтрол заполнен 800-ми строками и содержит 5 столбцов
В контроле осуществляется поиск, допустим согласно условию
найдено в 300-ой строке, как пользователю выделить
и показать её ?

Код: plaintext
1.
2.
CListCtrl* pmyListCtrl;	
pmyListCtrl = (CListCtrl* ) GetDlgItem(IDC_LIST1);
int nCount  = pmyListCtrl->GetItemCount();  // количество строк в CListCtrl
СПАСИБО
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32582524
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SetItem(LVITEM*)

в маске указываешь, что будешь править select.
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32582611
Tracer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и про EnsureVisible не забудь
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32584303
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
БОЛЬШОЕ СПАСИБО CEMb and TRACER .

Проблема исчезла по Ваших подсказкаm

Код: plaintext
1.
2.
pmyListCtrl->SetItem(nItem,  0 , LVIF_STATE, NULL,  0 , 
LVIS_SELECTED, LVIS_SELECTED,  0 ); 
pmyListCtrl->EnsureVisible(nItem,TRUE); 

С помощью вышеуказанных операторов выделяется найденная строка в контроле ClistCtrl.

Что не могу реализовать:

1.Выделение цветом тёмно-синим, сейчас же цвет –такой же как и фон диалогового окна
Такой цвет обычно бывает после щелчка мышей на строке контрола.
2. Не закрывая д.о. изменяю содержимое искомой строки в контроле ClistCtrl. Найденная строка ( 67-ая ) при первом поиске осталась выделенной. При втором ( новом ) поиске найденная строка – 200-ая.
Как снять выделение с 67-ой строки ?

Если нехлопотно, подскажите.
СПАСИБО.
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32584646
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. не совсем понятно...

2. Если я правильно понял - надо найти все предыдущие выделения.
(Гы, какой-то медицинский термин...)

GetFirstSelectedItemPosition - находит первую выделенную
POSITION pos = m_lView.GetFirstSelectedItemPosition();
а номер итема
int nItem = m_lView.GetNextSelectedItem(pos);
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32585052
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1.К сожалению snapshot здесь или не реализованы или я не умею показывать.

Цвет на найденной строке серого цвета, а хотелось бы тёмно-синего, как в предыдущем сеансе сказано или как в заголовках диалоговых окон, я так могу объяснить.

2.Проблему выделения найденной строки в контроле CListCtrl
Изучаю на выведенном в него перечнем функций, которые входят
В USER32.DLL – их там около 700 ( зависит от операционной системы - Win98 or WinXP)
Допустим, я открыл диалоговое окно, нашёл одну функцию, потом ищу вторую не закрывая диалог. Окно, потом третью – сколько хочу. Поэтому после каждого поиска я курсор ставлю на нулевую строку и

выделение с предыдущей найденной строки надо снять - как ?

СПАСИБО
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32585108
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй использовать SetSelectionMark()
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32585667
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Видимо, никак. В активном состоянии оно рисуется синим, как тока фокус потеряло - серым.

2. Так же, как и ставить, тока там где флаг, пишешь ноль (маска та же).
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32588174
keisik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы выделение всегда было синим :-) нужно установить контролу свойство LVS_SHOWSELALWAYS. То есть в редакторе ресурсов галочку проставить (как она точно в 6-й студи называется не помню).
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32590537
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы выделение всегда было синим :-) нужно установить контролу свойство LVS_SHOWSELALWAYS. То есть в редакторе ресурсов галочку проставить (как она точно в 6-й студи называется не помню).[SRC][/src]
Птица там стояла. СПАСИБО за стремление помочь.
К сожалению проблема не решена.
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32590550
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтобы выделение всегда было синим :-) нужно установить контролу свойство LVS_SHOWSELALWAYS. То есть в редакторе ресурсов галочку проставить (как она точно в 6-й студи называется не помню).


Птица там стояла.

СПАСИБО за стремление помочь.
К сожалению проблема не решена.
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32590657
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, оно не может быть синим, это виндовский цвет.
Всмысле, оно _может_сохранять_выделение_ (блин, опять какой-то медицинский термин...)
Но оно будет серым (вкупе с вышесказанным, с точки зрения медицины - ужасс )
Или его вообще не может быть. Серый цыет - это цвет чего-то там неактивного....
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32590675
zuzu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a ti otrisovivai sam kontrol, v smisle rucikami i togda tsvet budet takoi kakoi tebe nado
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32591215
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
a ti otrisovivai sam kontrol, v smisle rucikami i togda tsvet budet takoi kakoi tebe nado

я бы не против, конечно самому лучше, лучше кому - то подсказывать,
чем просить. К сожалению я не на том УРОВНЕ СВОЕГО РАЗВИТИЯ,
что вынужен просить.

СПАСИБО
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32591525
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опиши, что у тебя сщас происходит. Подробно.
...
Рейтинг: 0 / 0
VISUAL C++ 6.0 , Control of class CListCtrl
    #32592195
Beginner_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb , спасибо.
Итак, чото происходит:
1. Contrl CListCtrl заполнен 647-ю строками – именами функций, которые входят в USER32.DLL
2. In control CEdit находится имя искомой функции ‘CloseWindow’ в контроле CListCtrl
3. К командной кнопке прикреплён программный код поиска. Поиск удачный, строка найдена , это 67 пункт. Она выделена, но цве её не такой тёмно-синий, когда мы щёлкаем на строке , допустим , на CComboBox , CEdit, CListBox или даже на єтом же CListCtrl – всё описанное ранее остаётся в силе. Цвет найденной и еленной строки совпадает с цветом фона диалогового окна. После щелчка левой клавишей мыши на этой строке выделение становится тёмно – синим – НОРМА. Какой код обеспечит такой цвет при нахождении соответсвующей строки ?
4. Сам код к командной кнопке:

Код: plaintext
1.
CListCtrl* pmyListCtrl;	
pmyListCtrl = (CListCtrl* ) GetDlgItem(IDC_LIST1);

// попытка снять ( отменить ) выделение строк, ранее
// найденных не закрывая диалоговое окно – допустим
// пользователю надо найти 10 названий – не будет же он
// каждый раз закрывать д.о. и вновь щёлкать на кнопке.
// PS: так мне посоветовали, я попробовал


Код: plaintext
1.
2.
3.
4.
5.
6.
if (pmyListCtrl->GetSelectionMark() == - 1 )
	{
		MessageBox("35. ни одна строка НЕ ВЫДЕЛЕНА"); 
		pmyListCtrl->SetSelectionMark( 0 ); // 1 
	}
	else
		pmyListCtrl->UpdateData(FALSE); // TRUE);

код поиска опускаю

выделение найденной строки:

Код: plaintext
1.
2.
pmyListCtrl->SetItem(nItem,  0 , LVIF_STATE, NULL,  0 , 
		LVIS_SELECTED, LVIS_SELECTED,  0 ); 
pmyListCtrl->EnsureVisible(nItem,TRUE);
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / VISUAL C++ 6.0 , Control of class CListCtrl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]