Вы комментируете:
А как насчет плеера Winamp?У него есть функции увеличения / уменьшения громкости, назначенные для клавиш со стрелками вверх и вниз соответственно. Хорошо, если это невозможно в Delphi, тогда ...
но это, безусловно, возможно, простоЭто не очень хорошая идея, и это противоречит Руководству по взаимодействию с пользователем.
Но если вы настроены на реализацию, вот как.Переопределите следующий метод в своем классе формы, который содержит компоненты действий:
function IsShortCut(var Message: TWMKey): Boolean; override;
, и в нем вы можете запретить клавишам вверх и вниз запускать действия, для которых они являются сочетаниями клавиш:
function TWeirdForm.IsShortCut(var Message: TWMKey): Boolean;
begin
if (Message.CharCode in [VK_UP, VK_DOWN])
// insert test whether message needs to go to the focused control instead
and (...)
then begin
// insert calls to code that should be executed instead
Result := False;
exit;
end;
inherited;
end;
Обратите внимание, что вы должны также проверить правильность состояния сдвига и убедиться, что ваш код не нарушает поведение других окон, которое ожидает пользователь, например, перемещение окна с помощью клавиш со стрелками.