Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > Как сделать редактируемую таблицу |
Автор: erslgoeirjh 10.10.2016, 15:42 |
Как сделать нередактируемую таблицу при помощи CListCtrl, я знаю--нужно поставить у этого компонента стиль LV_REPORT, а также расширенный стиль LVS_EX_GRIDLINE. Для изменения цвета сетки нужно переопределить метод OnPaint в компоненте и нарисовать вертикальные и горизонтальные линии по соответствующим координатам. Для возможности множественного выбора нужно поставить расширенный стиль LVS_EX_MULTISELECT. Но в этом случае таблица будет нередактируемой--в ней нельзя изменить значения ячеек вручную. Как сделать эту таблицу редактируемой--то есть чтобы можно было во время выполнения программы редактировать значения ячеек? |
Автор: Amp 10.10.2016, 16:11 |
Ты можешь выставить LVS_EDITLABELS, но редактируемой будет только первая колонка. Поэтому если нужно именно in-place редактирование, то нужно будет для заданной ячейки создавать CEdit под ее размер и на enter или потерю фокуса его уничтожать. Если in-place редактирование не нужно, то можно просто при попытке редактирования ячейки отображать модальный диалог с эдитом. В MFC/WinAPI нет полноценного грида, поэтому (если тебе зачем-то в 2016 году надо писать именно на MFC) давно бы уже взял какой-нибудь сторонний компонент вроде этого http://www.codeproject.com/Articles/20183/The-Ultimate-Grid-Home-Page |
Автор: erslgoeirjh 11.10.2016, 09:56 |
И ещё вопрос: как получить доступ к субайтему у CListCtrl? Как получить доступ к айтему, я знаю--функции GetItem и SetItem. А как получить доступ к субайтему? (Я новичок в MFC, поэтому, пожалуйста, не удивляйтесь таким вопросам). |
Автор: erslgoeirjh 19.10.2016, 10:56 | ||
А какие ещё существуют среды разработки для языка C++, кроме Visual C++ и CBuilder? |