|
처음에 space 를 (Button1 에 포커스가 가 있었겠죠?) 누른것이 Button1KeyPress 로 들어가는게 아니고
Button1Click 을 호출 했을겁니다. space key는 바로 어떤 컨트롤이 (버튼같은) focus 가 있을경우
그녀석을 누른 동작을 유도 합니다. enter key 와 같은 동작을 합니다.
그러니까 다른 component 에 포커스가 있으면 그 녀석한테 마우스 클릭 같은 처리가 가는 것 입니다.
space 를 결국 핫키 같이 사용하시려고 하는듯 하군요.
그러러면 이렇게 하세요.
혹시 폼에 popup menu를 설정하셨는지 모르겠는데요.. 혹시 하셨다면
popup menu 에 menu 하나 추가하셔서 visible 을 false 로 두시고 (그러면 메뉴에는 않나타나겠죠.., 보여도 상관 없으면 그냥 visible 넣어 두시고요) Property 의 ShortCut 에 Space 를 넣어 두시고 해당 메류의 click event 에 Button1Click 을 연결해 놓으세요..
만일 popupmenu 가 나타나지 않아야 되는 폼이면요..
일단 popupmenu 를 만들어 폼에 연결하시고요..
popupmenu 의 AutoPopup 특성을 false 로 만들어 놓으시면 popupmenu 연결된 폼이라도 마우스 우클릭에 의하여
popup이 않나옵니다.
즉 ShortCut key를 이용하시는게 좋은 방법입니다.
수고하세요.
이원 님이 쓰신 글 :
: void __fastcall TFrmMain::Button1KeyPress(TObject *Sender, char &Key)
: {
: if(Key == VK_SPACE){ //스페이스바가 눌려졋다면
: Button1->Click(); // Button1 클릭한다.
: }
: }
: //---------------------------------------------------------------------------
: void __fastcall TFrmMain::Button1Click(TObject *Sender)
: {
: MeasureCall(); //Button1 클릭시 MeasureCall(); 함수실행하라.
: }
: //---------------------------------------------------------------------------
:
: 급질문(내일 납품)
:
: <제가 설정해 놓은것>
: 1. MainForm 의 KeyPreview --> true;
: 2. Button1 의 Default --> false;
: 3. TabOrder --> 0 //다른 버튼들 TabOrder-->1,2,3... 이런식으로 설정
:
: <문제발생>
: 1. 처음 실행시 Button1의 KeyPress 이벤트 실행 정상적 작동합니다.
: 하지만. 다른버튼 클릭하고 나면 스페이스바 아무리 눌러두 Button1 이 동작하는게 아니라
: 방금 클릭한 다른 버튼이 스페이스바 누르면 동작해서 결국, MeasureCall() 함수를 호출하지 못합니다.
: 다시 마우스로 Button1 클릭해줘야 다시 작동하니, 설정문제 인거 같은데 고수님들 도와주십시오.
: 첫번째 프로젝트 무사히 마칠수 있도록 도와주시면 무지감사(오늘 축구도 못봄 ㅋㅋ)
|