Я создал потомка TListView
и хочу захватить несколько нажатий клавиш, если Focused()
Я пробовал связанные события et c. уже так же (тот же результат), но я бы хотел использовать его следующим образом:
void __fastcall MyListView::KeyUp(System::Word &Key, TShiftState Shift)
{
if (Focused() && Selected)
{
if (Key == VK_RETURN)
{
// Do stuff *using Selected* when key matches etc.
Key = 0 ; // No more processing for this key
}
}
TListView::KeyUp(Key, Shift) ;
}
Хотя Selected
всегда заслуживает доверия и может использоваться в других моих перегруженных функциях и т. д. c. Я считаю, что это всегда NULL
во время этого события, что озадачивает? Разве Selected
не управляется глобально в экземпляре TListView
и почему для этой функции должно быть установлено значение NULL? И вернуться к обычному режиму для других функций?
РЕДАКТИРОВАТЬ 1
Я также попытался, но безуспешно:
int Index = ListView_GetNextItem (Handle, -1, LVNI_SELECTED) ;
TListItem *Selected = Items->Item[Index] ;
вернул Индекс быть -1
РЕДАКТИРОВАТЬ 2
Мне повезло больше со следующим:
int Index = ListView_GetNextItem (Handle, -1, LVIS_FOCUSED) ;
TListItem *Selected = Items->Item[Index] ;
Это своего рода обходной путь, потому что сосредоточены не совпадает с выбранным. И все остальные переменные ListView также не видят ничего выбранного, например SelCount
et c. Так что это влияет и на другие коды / функции, которые я вызываю.
Так что, когда я go делаю один шаг вперед и следующий, делаю:
TListView::Selected = Selected ;
Все работает как положено (кроме когда было выбрано несколько элементов, это приводит к тому, что это))
Странно, что элемент управления ListView не видит ни одного элемента selected
во время KeyUp
, хотя визуально ясно, что один выбранный (как видно во время * 1040) * например).
РЕДАКТИРОВАТЬ 3
На самом деле я получаю некоторые лучшие результаты при использовании KeyDown
вместо KeyUp
(Selected
на самом деле работает правильно тогда). Одна из причин, которую я раньше не замечал, заключается в том, что я проводил тестирование с ключом VK_APPS
(для которого он до сих пор не работает с KeyUp
и KeyDown
). Та же проблема сохраняется для комбинации Shift + F10, которую я хотел использовать для пользовательского PopupMenu.