안녕하세요. 한델에서 많은 정보 얻고 있는 기지훈입니다.
기존의 글들을 장시간 찾아보고도 해결 못해서 글을 올립니다.
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이벤트 모두 써보았습니다만 위의 문제를 해결하지 못했습니다.
델파이 초보에게 따뜻한 도움 부탁드립니다.
다름 부분에서 잘못 된것 같은데요..
브레이크 포인트를 찍어놓고 하나씩 따라가 보세요..
어떻게 흘러가는지.
그럼 쉽게 풀리리라 생각합니다..