Выбранный TListView имеет значение NULL при проверке в перегруженной функции KeyUp (также в связанных событиях Up / Down и т. Д. c.) - PullRequest
0 голосов
/ 02 марта 2020

Я создал потомка 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.

...