Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 28.11.16 13:31
Оценка:
Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?

Не могли бы вы привести пример кода или дать ссылку на этот пример?
Re: Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: uzhas Ниоткуда  
Дата: 28.11.16 13:52
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?


не могли бы вы писать в ветку MFC ?
сюда : http://rsdn.org/forum/mfc/
Re: Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: turbocode  
Дата: 28.11.16 14:35
Оценка:
RF>Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
RF>Не могли бы вы привести пример кода или дать ссылку на этот пример?

Первый пример в гугле
Re[2]: Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 18.04.17 13:05
Оценка:
Здравствуйте, turbocode, Вы писали:

RF>>Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?

RF>>Не могли бы вы привести пример кода или дать ссылку на этот пример?

T>Первый пример в гугле


Этот пример у меня не работает. При нажатии на нужную кнопку у меня выделяется вся строка, но никакого появления edit-а у меня нет.

Что мне следут сделать?

Может быть, мне лучше написать свой код? Я знаю, что нужно использовать компонент CEdit для того, чтобы редактировать нужную мне клетку.
Но как это правильно сделать? И какие события мне надо обрабатывать? Какие функции нужно писать? И как мне правильно уничтожать этот edit для при нажатии на клавишу ввода (Enter или Return) или при клике мышкой (одиночным или двойным) на другую клетку таблицы?
Re[3]: Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: ioni Россия  
Дата: 18.04.17 16:39
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Здравствуйте, turbocode, Вы писали:


RF>>>Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?

RF>>>Не могли бы вы привести пример кода или дать ссылку на этот пример?

T>>Первый пример в гугле


RF>Этот пример у меня не работает. При нажатии на нужную кнопку у меня выделяется вся строка, но никакого появления edit-а у меня нет.


RF>Что мне следут сделать?


RF>Может быть, мне лучше написать свой код? Я знаю, что нужно использовать компонент CEdit для того, чтобы редактировать нужную мне клетку.

RF>Но как это правильно сделать? И какие события мне надо обрабатывать? Какие функции нужно писать? И как мне правильно уничтожать этот edit для при нажатии на клавишу ввода (Enter или Return) или при клике мышкой (одиночным или двойным) на другую клетку таблицы?

https://www.codeproject.com/Articles/6646/In-place-editing-of-ListView-subitems
Re: Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: MasterZiv СССР  
Дата: 19.04.17 06:31
Оценка:
Здравствуйте, RussianFellow, Вы писали:

RF>Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?


Вообще, сделать это очень трудно и не стоит даже пытаться объяснить.
(MFC тут кстати и ни при чём, если не будешь использовать его
в реализации, а если будешь, оно особенно сильно не поможет).

При том, что это сделать трудно, КАК это делать ещё очень сильно
зависит от того, ЧТО ты хочешь в итоге получить, потому что
разные наборы фич будут приводить к совершенно разным решениям.

Простейшие в разной степени работающие и неработающие примеры того,
как это сделать, есть на codeguru и других подобных сайтах, 80% из
них -- фуфло не работающее в реальности, но хотя бы демонстрирующее
подходы к решению.

Подход в общем общий один -- сначала ловится нотификация от SysListView32
LVN_BEGINLABELEDIT, что-то такое, потом вычисляется контур ячейки и
создаётся EDITBOX над ListView в этом месте, перекрывающий ячейку,
в него записывается значение из ячейки, затем начинаются пляски с
бубном по ловле выхода из EDITBOX. Принципиально можно делать двумя
путями: модальное выполнение EDITBOX (отдельный message loop), либо
немодальное выполнение EDITBOX, но в обоих случаях нужно ловить
потерю фокуса из EDITBOX и завершать редактирование по этому событию:
брать значение, уничножать EDIT, устанавливать значение обратно в грид,
и всё такое.

Отдельная тема -- это выделение чем-то вроде маркера фокуса ячейки грида,
которая будет редактироваться -- ListView это делать не умеет. Но плюс в том,
что это можно и не делать, активироваться только мышкой. Если делать, то
хрошее решение -- отрисовывать все ячейки грида самому. При этом полезно
данные в гриде тоже не хранить (OWNERDATA стиль).

Всё это настолько геморно, что возможно в итоге ты к концу поймёшь, что
легче было не использовать ListView, а написать грид с нуля самому.
Это тоже нелегко, но хотя бы всё будет твоё и не будет дурацких ограничений.
Re[4]: Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 19.04.17 07:05
Оценка:
Здравствуйте, ioni, Вы писали:

I>https://www.codeproject.com/Articles/6646/In-place-editing-of-ListView-subitems


Уважаемые коллеги, не могли бы вы скачать zip-файлы кода со страниц

https://www.codeproject.com/Articles/6646/In-place-editing-of-ListView-subitems

и

https://www.codeproject.com/Articles/28063/An-Extended-MFC-CListCtrl-to-edit-individual-cells

(во втором случае--и .zip-файл исходников, и .zip-файл демо)

и выложить их на какой-нибудь открытый сервер (на www.rsdn.org или на любой другой)--а то я забыл свой пароль на www.codeproject.com, а восстановить его не могу.
Re[5]: Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 19.04.17 12:42
Оценка:
А, всё, спасибо, не надо--я восстановил свой пароль на www.codeproject.com .
Re[2]: Как сделать ячейки в таблице (класс CListCtrl) редактируемыми?
От: RussianFellow Россия http://russianfellow.livejournal.com
Дата: 19.04.17 12:43
Оценка:
Вот этот пример:

https://www.codeproject.com/Articles/28063/An-Extended-MFC-CListCtrl-to-edit-individual-cells

у меня нормально идёт. Я его вставил в свою программу--нормально работает.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.