1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

Редактирование Clistview

Тема в разделе "С и С++", создана пользователем GOGA, 27 июн 2007.

  1. GOGA

    GOGA Гость

    Репутация:
    0
    Здравствуйте, уважаемые господа программисты!!!

    Хочу проконсультироваться и найти свою ошибку. Я программно создаю элемент типа CMyListView, который я унаследовал от CListView с флагами:


    Код:
    GetListCtrl().ModifyStyle( 0, LVS_REPORT | LVS_EDITLABELS);
    GetListCtrl().SetExtendedStyle(LVS_EX_FLATSB | 
    LVS_EX_FULLROWSELECT | 
    LVS_EX_HEADERDRAGDROP | 
    LVS_EX_GRIDLINES | 
    GetListCtrl().GetExtendedStyle() );

    После чего создаю обработчик для завершения редактирования:

    Код:
    ...
    BEGIN_MESSAGE_MAP(CMyListView, CListView)
    ...
    ON_NOTIFY_REFLECT(LVN_ENDLABELEDIT, OnEditLabelTab)
    ...
    END_MESSAGE_MAP()
    ...
    
    // И сам обработчик:
    ...
    void CMyListView::OnEditLabelTab(NMHDR* pNMHDR, LRESULT* pResult)
    {
    LV_DISPINFO* pDispInfo = (LV_DISPINFO*)pNMHDR;
    CString sEdit = pDispInfo->item.pszText;
    if(!sEdit.IsEmpty())
    GetListCtrl().SetItemText(pDispInfo->item.iItem, m_nEdit, sEdit);
    
    m_nEdit = -1;
    GetListCtrl().SetItemState(pDispInfo->item.iItem, 0, LVNI_FOCUSED | LVNI_SELECTED);
    *pResult = 0;
    }
    ...

    Только вот когда я вывожу информацию в таблицу и щелкаю левой кнопкой мыши на какой-нибудь ячейке, то доступной для редактирования стает всегда ячейка из первой колонки выбранной строки. А мне нужно, чтобы становилась доступной та ячейка, на которую я непосредственно щелкнул мышкой.

    Подскажите, можно ли так сделать, если можно то как?

    Заранее, СПАСИБО!
     
  2. Maxx

    Maxx Гость

    Репутация:
    0
    сдается мне, надо самому рисовать этот элемент
    создавать его со стилем LVS_OWNERDRAWFIXED, перехватывать нажатие мыши, создавать edit control со стилем ES_WANTRETURN (чтобы ентер ловить)
     
  3. GOGA

    GOGA Гость

    Репутация:
    0
    Спасибо за совет, уже со всем разобрался! Теперь могу все что угодно делать с CListCtrl! :D Могу поделиться опытом, если кого интерисует!
     
  4. Skyler

    Skyler Гость

    Репутация:
    0
    Привет! Стою сейчас перед аналогичной пороблемой: нужно редактировать значение ячеек во втором столбце и заность их в CList или в масив. Накопал тут, что нужно применять флаг LVS_EDITLABELS и обрабатывать уведомляющее сообщение LVN_ENDLABELEDIT, но тоже не знаю как <_< Помогите, кто-нибудь
     
  5. GOGA

    GOGA Гость

    Репутация:
    0
  6. Skyler

    Skyler Гость

    Репутация:
    0
    Большое-большое спасибо! Вроде разобрался... :)
     
Загрузка...

Поделиться этой страницей