Уффф... Кажись что-то наконец нарисовалось! Спасибо за помощь!
Метод такой: всю обработку клавиатуры надо перенести в OnShortCut формы. И далее примерно так:
Код:
procedure Tfm_komp.FormShortCut(var Msg: TWMKey; var Handled: Boolean);
begin
GlobalKeyBoardKey := dm.GetExtKey(Msg.CharCode); // Получение "расширенного" кода (свой формат) для последующего сравнения с кодами заданных в настройках горячих клавиш.
GAlt := dm.AltDown; // определение факта нажатия Alt, код я приводил ранее.
if GlobalKeyBoardKey = ukShowOperPanel then // пример обработчика (показ/скрытие панели)
begin
sbShowOperPanel.Down := not sbShowOperPanel.Down;
sbShowOperPanelClick(Self);
Handled := true;
exit;
end;
........ // (действия с другими клавишами)
if GAlt then Handled := true; // если вдруг обнаружилась нажатая "неподавленная" Alt, "давим" её.
end;
В случаях, когда надо обрабатывать ГК, только если определённые контролы имеют фокус, здесь же это и проверяем.