Звуковой сигнал при срабатывании KeyDown

у меня есть TListView (это сосредоточено все время) и OnKeyDown обработчик события в моей форме (его KeyPreview свойство это правда).

playlist мой TListView составная часть (Style = vsReport).

void __fastcall Tmform::mformKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
if(Shift.Contains(ssCtrl))            // hotkeys with CTRL
{
switch(Key)
{
case vkF: findDoublesbtnClick(mform);  break;        // [FIND TWINS]
case vkD: dbsClick(mform);             break;        // [DELETE BAD SONGS]
case vkA: playlist->SelectAll();       break;        // [CTRL + A]
case vkS: settingsClick(mform);        break;        // [SETTINGS]
}
}
else                                  // just keys
{
switch(Key)
{
case vkReturn:  if(playlist->SelCount) pl.refreshSong();        break;   // [ENTER]
case vkDelete:   af.deleteFiles();      break;        // [DELETE]
case vkSpace:
case vkNumpad3:  pl.playPauseResume();  break;
case vkSubtract: prevbtnClick(mform);   break;        // [PREVIOUS]
case vkAdd:      nextbtnClick(mform);   break;        // [NEXT]
case vkC:        counterClick(mform);   break;        // [LISTENINGS WIN]
}
}

Почему гудит, когда я нажимаю любую клавишу (с TListView внимание)?

-2

Решение

Итак, я узнал, Зачем это пищит. Кажется, это стандартное поведение компонента TListView. Когда выбран один элемент в TListView (и TListView имеет фокус), любой ввод символов запускает метод «выбрать типизированный элемент», который пытается найти и выбрать элемент с помощью нашего ввода.

Это был ответ, который меня интересовал. Для работы однокнопочных горячих клавиш я использовал следующий код:

void __fastcall Tmform::FormKeyPress(TObject *Sender, System::WideChar &Key)
{
if(Key == L's' || Key == L'ы' || Key == L'i')
Panel1->Color = RGB(random(255),random(255),random(255)) ;
Key = 0;
}

РЕДАКТИРОВАТЬ: я нашел лучшее решение для этой проблемы. Вместо строки:
if(Key == L's' || Key == L'ы' || Key == L'i')
Я использовал это:
if(GetAsyncKeyState(vkS))
Он работает практически со всеми существующими раскладками клавиатуры ПК.
! Он не будет работать должным образом, если у вас есть раскладка Dvorak (или немецкий) и стандартная клавиатура QWERTY.

Спасибо за помощь!

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector