Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить пункты выделеной строки, В CListCtrl не удается получить инфу 
:(
    Опции темы
SSlavon
Дата 11.10.2004, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.9.2004

Репутация: нет
Всего: нет



Представление наследовано от CListView, создан объект CListCtrl (таблица).
В таблице выделяю строку и пытаюсь получить инвфу из пунктов этой строки по сообщению WM_LBUTTONDOWN(), но никакой реакции не происходит.
Если кликаю в стороне от таблици, инфа выдается. В чем дело?
И как получить номер выделеной строки?
PM MAIL   Вверх
Step
Дата 12.10.2004, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



обработать сообщени nm_click
Код
NMITEMACTIVATE* pLVCD = reinterpret_cast<NMITEMACTIVATE*>( pNMHDR );
// TODO: Add your control notification handler code here

CString col0=m_list.GetItemText(pLVCD->iItem,1);

CString col1=m_list.GetItemText(pLVCD->iItem,0);

*pResult = 0;



--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
SSlavon
Дата 12.10.2004, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.9.2004

Репутация: нет
Всего: нет



что-то я не догнал как работает nm_clik, и в msdn чет не разберусь
как этот код должен сработать?
PM MAIL   Вверх
Step
Дата 12.10.2004, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



у тебя что не работает
если не работает убери строку

CString col0=m_list.GetItemText(pLVCD->iItem,1);


А работает просто, при клике посылается месага и в функцию передаеться
pNMHDR который преобразовываеться в структуру NMITEMACTIVATE которая содержит информацию о том по какому элементу был клик, если лист имеет несколько колонок то данная структура имеет поле iSubItem которое указывает на колонку... но тут есть какойто глючок, со свойствами надо мутить...


что конкретно не понятно


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
SSlavon
Дата 12.10.2004, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.9.2004

Репутация: нет
Всего: нет



я пытаюсь получить значение полей выделенной строки для удаления инфы из БД, но вставив в функцию удаления меседжбокс (сol1) получаю пустое окошко, т.е. сol1 пуст
PM MAIL   Вверх
Step
Дата 12.10.2004, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



Код давай, можешь проект на емайл


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
SSlavon
Дата 12.10.2004, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.9.2004

Репутация: нет
Всего: нет



iSubItem выдает результат, но только первой строки в списке, а не выделенной
PM MAIL   Вверх
Step
Дата 12.10.2004, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



ладно посмотрю... там просто номер строки нулевой, нужно как то со свойствами поигарться


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Step
Дата 12.10.2004, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



При всем моем уважение,.... стоит всетаки заглядывать в мсдн

Код

m_str = m_List.GetItemText(pLVCD->iSubItem,1);

m_str1 = m_List.GetItemText(pLVCD->iSubItem,2);

iSubItem - это по сути номер столбца.... а вы его подставляете в номер записи
если уже на то пошло то вот так попробуй....

(присланый тобой код безполезен так как нету БД)
Код

m_str = m_List.GetItemText(pLVCD->iItem,pLVCD->iSubItem);

m_str1 = m_List.GetItemText(pLVCD->iItem,pLVCD->iSubItem);


GetItemText(Номер записи, номер столбца)


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
SSlavon
Дата 12.10.2004, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.9.2004

Репутация: нет
Всего: нет



за базы сори, впарил
но вроде как нашел другой еще способ
Код

void CTransitDBView::OnDeleteRow() // собственная
{
               [b]POSITION pos = m_List.GetFirstSelectedItemPosition();
if (pos == NULL)
 TRACE0("No items were selected!\n");
else
{
   while (pos)
   {
   int nItem = m_List.GetNextSelectedItem(pos);
   TRACE1("Item %d was selected!\n", nItem);[/b]

   m_strDate = m_List.GetItemText(nItem, 0);
   m_strNumber = m_List.GetItemText(nItem, 1);
   m_strContr = m_List.GetItemText(nItem, 2);
   m_strSumm = m_List.GetItemText(nItem, 3);
   m_strVid = m_List.GetItemText(nItem, 4);
   m_strType = m_List.GetItemText(nItem, 5);

       m_List.DeleteItem(nItem);
   }
}

}

вроде как работает
сейчас и второй способ опробую
Добавлено @ 15:18
все таки не получается, pLVCD->iItem выдает -1, и nm_click срабатывает в стороне от CListCtrl
PM MAIL   Вверх
Step
Дата 12.10.2004, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



я говорил что есть проблемки необходимо со свойствами контрола поработать


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
SSlavon
Дата 12.10.2004, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.9.2004

Репутация: нет
Всего: нет



через m_List.GetFirstSelectedItemPosition(); вроде как заработало, что и требовалось
спасибо, будут траблы заведу тему smile.gif
PM MAIL   Вверх
Step
Дата 12.10.2004, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



эта строка тебе поможет
Код
m_l.SetExtendedStyle(m_l.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_TRACKSELECT|LVS_EX_GRIDLINES);

куда вставить сам уже подумаю... у тебя проект слишком большой, а у меня времени моловато что бы искать куда вставить
Добавлено @ 15:36
Цитата(SSlavon @ 12.10.2004, 15:08)
все таки не получается, pLVCD->iItem выдает -1, и nm_click срабатывает в стороне от CListCtrl

будет правильное значение


--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
SSlavon
Дата 12.10.2004, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 22.9.2004

Репутация: нет
Всего: нет



да, сейчас вроде как пошло, только m_List.GetItemText(pLVCD->iItem, pLVCD->iSubItem); выдает не то что нужно, у меня сложилось впечатление что выдает она строку за началом граници таблици
Добавлено @ 15:55
Цитата(Step @ 12.10.2004, 15:31)
Код
m_l.SetExtendedStyle(m_l.GetExtendedStyle()|LVS_EX_FULLROWSELECT|LVS_EX_TRACKSELECT|LVS_EX_GRIDLINES);

куда вставить сам уже подумаю...


стиль таблицы я задал в InitUpdate
PM MAIL   Вверх
Step
Дата 12.10.2004, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5151
Регистрация: 26.9.2002
Где: дурдом.UA

Репутация: 5
Всего: 25



SSlavon, выдает она как раз именно то что ты запрашиваешь, другой вопрос что запрашиваешь может что-то не то, обычно в таком виде редко применяеться
замени pLVCD->iSubItem на номер столбца данные из которого тебе надо получить..... отсчет с 0 начинаеться



--------------------
- Дурак учится на своих ошибках, умный на чужих.
 - умные учатся у дураков
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.