2010-02-23 7 views
1

KeyPreview = TRUE를 기본 폼 (MDI 부모)에 설정할 때 OnKeyDown, OnKeyUp 또는 OnKeyPress 이벤트가 발생하지 않습니다. 키를 누르면 주 메뉴 (TActionMenuBar)를 탐색 할 수 있습니다. 메뉴 막대가 키 이벤트를 제어 할 수 있습니다.폼에 TActionMainMenuBar가있을 때 KeyPreview 이벤트를 발생시키는 방법

사용자가 키 (예 : VK_RETURN 키)를 누르면 이벤트를 발생시키는 방법은 무엇입니까? 특정 키를 누를 때 나는 당신이 특정 동작을 수행 할 것을 볼 코멘트에서

+0

이 쉽지 않을 것 자신의 메시지 루프에서 실행되고 메뉴가 닫힐 때까지 양식이 차단됩니다. 너 정확히 뭘 하려구? 사용자가 VK_RETURN을 누르면 메뉴 항목이 선택되고 메뉴가 닫히고 메뉴 항목의 OnClick 또는 연결된 작업의 OnExecute 이벤트를 처리 할 수 ​​있습니다. –

+0

VK_Return 키를 누르면 자식 폼을 열려고합니다. 툴바에서 버튼을 누르는 대신 빠르게 액세스 할 수 있습니다. –

+0

특정 메뉴 항목에서 VK_RETURN을 누르면 나는 추정합니까? 이 경우 메뉴 항목의 OnClick 이벤트를 사용해야합니다. 또는 메뉴 항목이 작업과 연결되어 있으면 해당 작업의 OnExecute 이벤트를 사용하십시오. 코드는 마우스 또는 키보드에 관계없이 메뉴 항목이 선택 될 때 실행됩니다. –

답변

0

델파이 2009을 사용하고

(예. 폼 열)을. 이를 위해

, 당신은 TAction에 바로 가기 키를 할당하고 TAction.OnExecute

단계에서 해당 코드를 작성할 수 있습니다

  1. 드롭 그것에 TActionManager (또는 TActionList)
  2. 을 더블 클릭 (TActionManager의 편집기가 나타납니다). '새 작업'버튼을 누릅니다.
  3. ShortCut 속성을 원하는 값으로 설정하십시오.
  4. 해당 코드를 OnExecute 이벤트에 씁니다.

3 단계에서 양식을 여는 것과 같이 드물기 때문에 Enter 키를 할당하는 데 어려움이 있습니다 (아마도 사용자). '입력'은 Windows에서 매우 정의 된 의미입니다. 메뉴이기 때문에

나는 기능 키를 할당하는 것이 좋습니다 것 (F2-F9 보통) 및/또는 Ctrl +

HTH [양식의 이름의 첫 글자]

+0

Enter 키를 ShortCut으로 설정할 수 있습니까? 나는 TAction에서 그것을 볼 수 없다. 쉬어 컷 목록. FYI : 우리는 ENTER 키를 많이 사용합니다. –

+0

예. 그냥 써주세요. :-) 'Shortcut' 속성으로 가서 'Enter'(따옴표 제외)를 입력하십시오. [Enter] (키)를 누릅니다. 테스트하려면 OnExecute 이벤트로 가서'ShowMessage ('Boo!'); 또는 이와 유사한 테스트 코드를 작성하십시오. 코드가 실행되는 것을 볼 수 있습니다. '입력'이 목록에 포함되어 있지 않은 이유는 내가 말했듯이, 그 사용법은 맞춤 동작에 대해 권장되지 않는다는 것입니다.다행스럽게도 내 선택이나 델파이가 아니라 Windows 관습입니다. 하지만 응용 프로그램에 적합하다면 Windows가 종종 연결되는 경우에도 계속 진행하십시오. 테스트 및 작동 여부 ... –

+0

흠 ... D2009의 ShortCut 속성에서 Enter 키를 설정할 수 없습니다. "Inalid Property Value"오류가 발생합니다. 하지만 D7에서 작동합니까? –

관련 문제