어플리케이션에서 Ctrl+/ 또는 Alt+/ 단축키가 동작하지 않을 때

No Comments

델파이로 만든 어플리케이션에서는 메뉴나 액션의 단축키로 Ctrl + / 또는 Alt + / 키를 설정해도 동작하지 않는다.

/ 키를 VCL에서 인식할 수 없기 때문에 발생하는 문제인데 이를 해결하려면 메뉴나 액션이 포함되어 있는 폼의  IsShortCut 메소드를 오버라이드 해서 다음과 같이 별도 처리를 해주면 된다.

function TXXXForm.IsShortCut(var Message: TWMKey): Boolean;
const VK_SLASH = 191;
var SS : TShiftState; begin Result := inherited IsShortCut(Message);

// 기존 방법으로 단축키를 찾지 못했을 경우 if not Result then begin SS := KeyDataToShiftState(Message.KeyData);
// Ctrl+/ 나 Alt+/ 이면 if ((ssCtrl in SS) or (ssAlt in SS)) and
(Message.CharCode = VK_SLASH) then begin // CharCode를 변경한다. Message.CharCode := TextToShortcut('/');

// 변경된 메시지를 가지고 ActionList를 다시 한번 훑어본다. Result := inherited IsShortcut(Message);
end;
end;
end;