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

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

Наш партнер Genesis Hackspace
  1. GOGA

    GOGA Гость

    Здравствуйте, уважаемые господа программисты!!!

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


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

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

    Код (Text):
    ...
    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 Гость

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

    GOGA Гость

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

    Skyler Гость

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

    Skyler Гость

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

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