Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

CListCtrl (много мелких вопросов)

249
23 июня 2006 года
DissDoc
639 / / 01.10.2004
Вопрос #1 (их будет много, но я буду по одному задавать).
Как мне занести строку в определенную ячейку? Чтобы я не делал - текст всегда в первой ячейке, нулевом столбце остается (((
вот мой код
 
Код:
m_List.InsertItem(LVIF_TEXT|LVIF_STATE, 2, "test", 2, LVIS_SELECTED, 0, 0);

Где стоят двойки - я уже че только туда не ставил. все равно позиция текста остается постоянной ((
406
23 июня 2006 года
vitaly2003s
481 / / 27.07.2004
Используй что то вроде SetItemText
249
23 июня 2006 года
DissDoc
639 / / 01.10.2004
Использую, но ничего не происходит! Просто текст не пишется (
406
23 июня 2006 года
vitaly2003s
481 / / 27.07.2004
Да как это не пишется. Конешно он не будет писаться если до этого у тебя не существовало данной ячейки,т.е перед использованием SetItemtext необходимо использовать для данной строки InsertItem или AddItem чтобы вначале создать эту строку с ее ячейками а уж потом SetItemtext
249
23 июня 2006 года
DissDoc
639 / / 01.10.2004
Вот мой код
 
Код:
CRect rect;
    m_List.GetClientRect(&rect);
    m_List.InsertColumn(0, "Обозначение", LVCFMT_LEFT, 120);
    m_List.InsertColumn(1, "Наименование", LVCFMT_LEFT, 120);
    m_List.InsertColumn(2, "Статус", LVCFMT_LEFT, 120);
    m_List.InsertColumn(3, "Примечание", LVCFMT_LEFT, 180);

    m_List.InsertItem(1, "Наименование");

Теперь пишется "Наименование" в первой ячейке (т.е. по ходу координаты 0.0)б а как чтобы она записалась в первой строке во втором столбце (чтобы под названием заголовка "Наименование")
534
23 июня 2006 года
HarryAxe
448 / / 19.01.2006
[QUOTE=DissDoc]Вот мой код
 
Код:
CRect rect;
    m_List.GetClientRect(&rect);
    m_List.InsertColumn(0, "Обозначение", LVCFMT_LEFT, 120);
    m_List.InsertColumn(1, "Наименование", LVCFMT_LEFT, 120);
    m_List.InsertColumn(2, "Статус", LVCFMT_LEFT, 120);
    m_List.InsertColumn(3, "Примечание", LVCFMT_LEFT, 180);

    m_List.InsertItem(1, "Наименование");

Теперь пишется "Наименование" в первой ячейке (т.е. по ходу координаты 0.0)б а как чтобы она записалась в первой строке во втором столбце (чтобы под названием заголовка "Наименование")[/QUOTE]

 
Код:
m_List.InsertColumn(0, "Обозначение", LVCFMT_LEFT, 120, 0);
m_List.InsertColumn(1, "Наименование", LVCFMT_LEFT, 120, 1);

nItem = m_List.InsertItem(LVIF_TEXT, nItem, str1, 0, 0, 0, 0);
m_List.SetItemText(nItem, 1, str2);
249
26 июня 2006 года
DissDoc
639 / / 01.10.2004
Спасибо. помогло!
Вопрос №2.
Как теперь мне в таком виде
 
Код:
m_List.InsertColumn(0, "Обозначение", LVCFMT_LEFT, 120, 0);
m_List.InsertColumn(1, "Наименование", LVCFMT_LEFT, 120, 1);

встроить ComboBox во второй столбец например?

И сразу же Вопрос №3.
Как прочитать значение нужной мне ячейки?
Я делаю так - но это ошибка!
 
Код:
CString name;
m_List.GetItemText(0, 2, name);

А что за четвертый параметр в функции GetItemText?
249
28 июня 2006 года
DissDoc
639 / / 01.10.2004
Ладно. я думаю никто пока мне ничего по этому поводу не скажет ))
А как можно сделать так. чтобы редактировалась только определенная колонка в m_List??
11K
30 июня 2006 года
Ireul
90 / / 15.06.2006
[QUOTE=DissDoc]Ладно. я думаю никто пока мне ничего по этому поводу не скажет ))
А как можно сделать так. чтобы редактировалась только определенная колонка в m_List??[/QUOTE]

Никак.
Про встраивание в CListCtrl контролов где-то тут уже было.

CString name;
m_List.GetItemText(0, 2, name);

Вылетает и правильно делает. Правильно будет

CString name;
name = m_List.GetItemText(0, 2);

или

char name[1024]; // wchar_t если уникод
m_List.GetItemText(0, 2, name, 1024);

А так как ты сделал - гарантированный AV. Попытка записи строки в объект. Даже допуская что он развернёт CString в LPCTSTR - длина-то будет 0 - объект не инициализирован, да к тому же константа! по рукам бы тебе за такое :)

Поправка: редактировать только определённую колонку можно перехватом сообщения о начале редактирования и возвратом запрета, если редактируется неправильная колонка.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог