Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ввод в CListCtrl с клавиатуры / 13 сообщений из 13, страница 1 из 1
05.12.2005, 15:52
    #33417566
Mashusya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
собственно сабж.
как сделать, чтобы можно было вводить данные с клавиатуры в данный контрол?
...
Рейтинг: 0 / 0
05.12.2005, 15:55
    #33417575
Cerebrum
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
просто вводить или добавлять новые строки тоже?
Перехват клавиш не подойдет?
...
Рейтинг: 0 / 0
05.12.2005, 22:03
    #33418303
Mashusya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
в общем, CListCtrl, в первой колонке вводить не надо, во вторую надо ввести
один раз значения, те добавлять не надо
...
Рейтинг: 0 / 0
05.12.2005, 22:16
    #33418316
AndreiNz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
На сколько я знаю, Items в CListCtrl не равнозначны. Есть Item (одна на строку) и SubItem все остальные. Для Item можно определить что-то типа EDIT_LABELS Style и тогда можно будет менять текст в Item. Выглядеть это будет примерно так-же, как в Windows Explorer, тоесть не очень. С SubItem вообще проблема. Я честно говоря не знаю как их редактировать In-place.

Из обходных вариантов можно предложить

1. Создать диалог, вызываемый OnClick и позволяющий редактировать выбранную строку.
2. Попытаться использовать Owner draw. и рисовать Edit-ы в ячейках CListCtrl-а с соответствующей обработкой.
...
Рейтинг: 0 / 0
05.12.2005, 22:26
    #33418328
AndreiNz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
У контрола есть возможность переставлять колонки местами, Может это вас и устроит. Те вы ставите Item второй и разрешаете редактированние. Перестановка делается с помощью массива, но деталей я сейчас не помню.
...
Рейтинг: 0 / 0
05.12.2005, 22:40
    #33418347
Mashusya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
спасибо, попробую разобраться
...
Рейтинг: 0 / 0
06.12.2005, 08:21
    #33418538
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
В MSDN пример есть - MFCLIST. Вот кусок текста, который поможет искать в правильном направлении. Вообщем, нужно что бы стиль у листа был LVS_EDITLABELS, а в обработчике сообщения WM_NOTIFY от вашего CListCtrl правильно отреагировать на LVN_BEGINLABELEDIT и LVN_ENDLABELEDIT.

Editing Labels
When you create a list view control, you can enable label editing by specifying the LVS_EDITLABELS style, which lets a user edit an item's text label in place. The user begins by clicking the label of an item that has the focus. The list view control notifies the parent window with an LVN_BEGINLABELEDIT notification. If you do not want to allow label editing on certain items, you can return a nonzero value to disallow it. To limit the amount of text the user can enter, the application gets the handle to the edit window through the LVM_GETEDITCONTROL message (or the MFC GetEditControl member function) and sends the EM_SETLIMITTEXT message to the edit control (or uses the MFC LimitText member function of the CEdit class), specifying the maximum number of characters that can be entered.

Once editing is completed, the list view control sends its parent window an LVN_ENDLABELEDIT notification. The lParam parameter is the address of an LV_DISPINFO structure identifying the item and specifying the edited text. The parent window is responsible for updating the item's label. If editing is canceled, the iItem member is -1. Be alert to the possibility of getting a valid index to an item but getting a NULL pointer back for the text. This happens if the user chooses an item and immediately presses the Enter key.

The following code from the MFCLIST sample shows how to support label editing in a list view control:

case LVN_BEGINLABELEDIT:
{
CEdit *pEdit;
// Get the handle to the edit control.
pEdit = m_ListCtl.GetEditControl ();
// Limit the amount of text that the user can enter.
pEdit->LimitText (20);
}
break;

case LVN_ENDLABELEDIT:
// If label editing wasn't canceled and the
// text buffer is non-NULL...
if ((pLvdi->item.iItem != -1) && (pLvdi->item.pszText != NULL))
// Save the new label information.
lstrcpy (pHouse->szAddress, pLvdi->item.pszText);
break;

That's all there is to it. The LISTVIEW and MFCLIST samples should be enough to get you started if you plan to include list view controls in your application.
...
Рейтинг: 0 / 0
06.12.2005, 19:03
    #33420658
AlexSar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
Mashusyaв общем, CListCtrl, в первой колонке вводить не надо, во вторую надо ввести
один раз значения, те добавлять не надо
Для того, чтобы можно было вводить текст в любые ячейки таблицы, необходимо использовать не CListCtrl, а любой грид. Предыдущий пример позволит менять как раз только в первой колонке (т.н. Item, а все остальные колонки - SubItems).
Я, например, использую MFC Grid Ctrl V2.24 - оччень удобный бесплатный грид.
(Для VC.NET V2.25). Сырцы есть на .
...
Рейтинг: 0 / 0
06.12.2005, 19:05
    #33420665
AlexSar
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
Что-то не так сделал с гиперссылкой http://]www.codeproject.com/miscctrl/gridctrl.asp
...
Рейтинг: 0 / 0
09.12.2005, 07:41
    #33426395
Джек
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
Уважаемая Mashusya!
Вот здесь
всё про CListCtrl с исходниками, в том числе и про редактирование.
Скачивайте и вставляйте себе в проект.
...
Рейтинг: 0 / 0
09.12.2005, 13:06
    #33427224
Mashusya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
спасибо всем.. попытаюсь разобраться!=)
...
Рейтинг: 0 / 0
10.12.2005, 14:02
    #33428880
Mashusya
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
в общем использовала сообщения
LVN_BEGINLABELEDIT
и LVN_ENDLABELEDIT
и соответствующие им ф-ии:
OnBeginlabeleditLISTvar
OnEndlabeleditLISTvar

тока не пойму, че в них писать=) , если мне не надо редактировать текст
...
Рейтинг: 0 / 0
10.12.2005, 16:12
    #33428974
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ввод в CListCtrl с клавиатуры
Сходите на http://www.codeguru.com там в разделе про ListView полно примеров на это дело. Правда там может быть все достаточно халтурно, но как пример-идея очень даже хорошо. Основная идея в том, чтобы обрабатывать
EDITLABEL самому и EDIT перемещать в нужное место и задавать туда нужный текст.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ввод в CListCtrl с клавиатуры / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]