Q&A

  • 계산기의 '=' 버튼의 enter key 처리
안녕하세요. 한델에서 많은 정보 얻고 있는 기지훈입니다.

기존의 글들을 장시간 찾아보고도 해결 못해서 글을 올립니다.


MS Windows에 포함된 꼴의 (기본형) 계산기를 델파이로 만들어보고 있습니다.

키보드의 Enter를 쳤을 때 '=' 버튼이 눌리게 하려고 하는데요.


그래서 다음과 같은 이벤트 핸들러를 썼습니다.

=====================================================================

// 버튼 0~9, + - * / = 버튼의 KeyPress이벤트를 하나로 묶었습니다.

procedure TfrmCaculator.btn0KeyPress(Sender: TObject; var Key: Char);
begin
   case key of
   '0' : btn0click(btn0);
   '1' : btn0click(btn1);
   '2' : btn0click(btn2);
   '3' : btn0click(btn3);
   '4' : btn0click(btn4);
   '5' : btn0click(btn5);
   '6' : btn0click(btn6);
   '7' : btn0click(btn7);
   '8' : btn0click(btn8);
   '9' : btn0click(btn9);
   '+' : btnAddclick(btnAdd);
   '-' : btnAddclick(btnSubtract);
   '*' : btnAddclick(btnMultiply);
   '/' : btnAddclick(btnDivide);

   #13 : btnResultClick(btnResult); // 질문하려는 부분입니다.

   else
      beep;
   end; // case
end;


btnResultClick은 '=' 버튼을 클릭할때의 이벤트 핸들러입니다. 즉 제가 구현하려고 했던 것은 키보드의 enter를 칠때 '=' 버튼 클릭 이벤트를 발생시켜 마우스로 '='버튼을 눌러준 것과 같은 효과를 내려고 했습니다.

그러나 키보드 enter를 누르면 '=' 버튼 클릭 이벤트가 일어나는게 아니라 현재 '점선으로 된 사각형'이 놓인 버튼(사진에서 0번 버튼)이 눌린 것처럼 0이 쓰여집니다..



form에서 keypreview = true, btnResult.setfocus, keydown이벤트 모두 써보았습니다만 위의 문제를 해결하지 못했습니다.


델파이 초보에게 따뜻한 도움 부탁드립니다.



2  COMMENTS
  • Profile
    열심히 2003.07.25 18:42
    위의 이벤트 부분에서는 이상이 없는것 같습니다.

    다름 부분에서 잘못 된것 같은데요..

    브레이크 포인트를 찍어놓고 하나씩 따라가 보세요..

    어떻게 흘러가는지.

    그럼 쉽게 풀리리라 생각합니다..
  • Profile
    연기훈 2003.07.25 19:23
    key 값 초기화를 해줘야 하는 거 아닌지...

    case 문 끝나고서..

    key := 0;

    해보세요...

    그리고, keypress 이벤트 말고..

    keydawn 이벤트에 구현하시는 것이 더 좋을꺼 같은데요...