Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > ListView Выделение строки по индексу строки.


Автор: XPyCT 6.12.2017, 10:53
Всем привет!

Суть проблемы в следующем.

выделяю мышкой к примеру 3 кол- 3 ряд ячейку в GriView.
Появляется ЕдитБокс заполненный данными из этой ячейки. 
Далее клавишами влево вправо верх низ, перемешаюсь при этом изменяю состояние переменных:

Код

g_Form->Grid->ColIndex;
g_Form->Grid->RowIndex;


оконой процедуре ЕдитБокса, в событии WM_KEYUP: VK_RETURN
делаю следующее:
Код

strcpy(szBuff, g_Form->Edit1->GetText());
g_Form->Grid->AddText(Col, Row, szBuff);
g_Form->Edit1->SetText("");
g_Form->Edit1->Hide();
ZeroMemory(szBuff, MAX_PATH);
SetFocus(g_Form->Grid->GetHandle());
  
В GriView из едита, Текст нормально добавляетя в правильную ячейку GriView.
При этом после скрытия Едита, выделенной остается строка/ячейка с которой началось перемещение.
пробовал следующее но результат 0.
Вариант 1
Код


LV_ITEM _ms_lvi;
_ms_lvi.stateMask = LVIS_SELECTED;
_ms_lvi.state = LVIS_SELECTED;// LVIS_FOCUSED;
ListView_SetItemState(g_Form->Grid->GetHandle(), LVM_SETITEMSTATE, g_Form->Grid->RowIndex, (LPARAM) (LV_ITEM FAR *)&_ms_lvi);
                    
 

Вариант 2
Код


ListView_SetItemPosition(g_Form->Grid->GetHandle(), LVM_SETITEMPOSITION, g_Form->Grid->RowIndex, g_Form->Grid->ColIndex);

 

Ребята помогите плз. Голову сломал, а информации так и не нашел.
За ранее спасибо.

Автор: XPyCT 6.12.2017, 12:32
Может кому пригодиться, решил задачу вот так.
Код

ListView_SetItemState(g_Form->Grid->GetHandle(), g_Form->Grid->RowIndex, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED);


если у кого  есть более элегантное решение, рад буду увидеть.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)