Как редактировать столбцы на месте с помощью CListCtrl? - PullRequest
3 голосов
/ 31 октября 2008

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

Ответы [ 2 ]

2 голосов
/ 03 ноября 2008

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

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

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

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

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

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

2 голосов
/ 31 октября 2008

Не пытайтесь с CListCtrl.

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

...