Подскажите! List Control. Ввод данных с клавиатуры

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
juky88
Сообщения: 6
Зарегистрирован: 16 апр 2011, 20:31

Есть задача: вводим числа с клавиатуры, присваиваем им с помощью combobox определенное свойств (типа да/нет). Ввод чисел не ограничен, т.е пользователь может ввести сколько угодно чисел и рядом с каждым числом должен появляться combobox.

Как вариант можно использовать list control:

Код: Выделить всё

BEGIN_MESSAGE_MAP(CMPDDlg, CDialog)
...
ON_NOTIFY(LVN_ENDLABELEDIT, IDC_LIST2, &CMPDDlg::OnLvnEndlabeleditParamPro b)//редактирование
ON_NOTIFY(LVN_BEGINLABELEDIT, IDC_LIST2, &CMPDDlg::OnLvnBeginlabeleditParamP rob)
...
END_MESSAGE_MAP()

BOOL CMPDDlg::OnInitDialog()
{
CDialog::OnInitDialog();
...
//CListCtrl lc_paramProb;
lc_paramProb.SetExtendedStyle (LVS_REPORT| LVS_EX_CHECKBOXES| LVS_OWNERDATA| LVS_EDITLABELS);
lc_paramProb.InsertColumn(0, _T("(Пакет) Вероятность ошибки"),LVCFMT_LEFT, 180, -1);
int Index=lc_paramProb.InsertItem(LVIF_ TEXT,0, _T(" "),0,0,0,NULL);
...
}

void CMPDDlg::OnLvnEndlabeleditParamProb (NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNM HDR);
LVITEM item = pDispInfo->item;
CString field;
// пользователь отменил ввод
if (item.pszText == NULL)
{
*pResult = 0; // "0" информирует систему о неуспешном вводе
return;
}

// пользователь произвёл ввод, надо обновить наши данные
field = item.pszText;

*pResult = 1; // "1" информирует систему об успешном вводе
}

void CMPDDlg::OnLvnBeginlabeleditParamPr ob(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVDISPINFO *pDispInfo = reinterpret_cast<NMLVDISPINFO*>(pNM HDR);

*pResult = 0;
}
Как правильно использовать list control не знаю. Обязательно ли использовать функции OnLvnEndlabeleditParamProb() и OnLvnBeginlabeleditParamProb() вместе и для чего тогда вторая функция?

У меня данные с клавиатуры вводятся, но по нажатию enter сразу пропадают и combobox не появляется.

Подскажите, пожалуйста, как правильно использовать list control в данном случае? и стоит ли использовать именно его, может есть другие варианты?
juky88
Сообщения: 6
Зарегистрирован: 16 апр 2011, 20:31

Числа вводятся, комбобоксы появляются, но тормозит немного. Поясню: пытаюсь установить курсор в строку для ввода, но сам курсор появляется только после второго однократного нажатия и то НЕ СРАЗУ. :confused:
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Приведи кусок кода в последней редакции - попробуем помочь.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
juky88
Сообщения: 6
Зарегистрирован: 16 апр 2011, 20:31

уже выкрутилась :)
СПАСИБО!!!!!
Ответить