Как редактировать столбцы на месте с помощью CListCtrl?



Я хочу иметь CListCtrl.EditLabel () для любого столбца списка. Как я могу реализовать такую функцию?

415   2  

2 ответов:

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

В двух словах вы ловите левую кнопку мыши вниз сообщение и преобразуете его в ячейку hit details (то есть индекс строки и столбца).

С помощью этих сведений о ячейке вы не можете определить размер и расположение ячейки представления списка, а также текстовое значение, которое она содержит.

Теперь создайте элемент управления CEdit непосредственно над этой ячейкой, используя сведения о размере и местоположении из предыдущий шаг и дать ему текстовое значение ячейки.

Последним шагом является обработка событий ввода фокуса и клавиатуры для CEdit, чтобы текстовые данные CEdit можно было поместить обратно в ячейку представления списка.

Это требует изрядного количества кодирования, но когда все сделано правильно, это хорошо работает в качестве альтернативы сетчатому управлению.

Не пытайтесь использовать CListCtrl.

Используйте элемент управления MFC Grid . Мы успешно развертываем его в готовом приложении. Он предлагает редактирование на месте, флажок, вращение и т. д. Для всех ячеек,а также заголовки столбцов и строк, автоматический размер, автоматическое расширение, цвета, перетаскивание.

Comments

    Ничего не найдено.