|
Key이벤트는
KeyPress 와 KeyDown, KeyUp으로 나누어 생각할 수 있습니다. 차이점은 함수인자에 TShiftState가 더 있다는 거지요. 또한 일반적으로 Virtual Key입력을 받느냐 못받느냐의 차이도 있습니다.*^^*
예를 들어 KeyPress는 ESC키의 키코드를 알지 못합니다. 즉, 함수내에서 (VK_xxxx VirtualKey라는 의미)
if(Key == VK_ESCAPE) { do-something } 을 제대로 수행하지 못한다는 말이지요..
TShiftState인자도 없지요.. 이 녀석은 키조합을 검사해 볼 수 있습니다.
이런 식으로 사용합니다.
void __fastcall TView::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
{
if(Shift.Contains(ssAlt) && Key==VK_F1) MainForm->About1Click(Sender);
}
키가 눌러졌을 때 Alt키 와 F1키가 함께 눌러졌다면 About1Click이라는 버튼을 눌렀을 때 수행하는
일을 수행합니다. 여기서 Sender로 받아온 녀석을 써먹을 수 있습니다..
님께서 하고 싶은 일은 버튼을 클릭했을 때니까 ButtonClick(TObject *Sender)가 있겠지요?
void __fastcall TForm1::Button1Click(TObject *Sender)
{
// 여기서 주어질 키 값을 챙겨야 겠지요. 그냥 KeyValue라고 한다면
FormKeyPress(Sender, KeyValue);
}
라고 쓰시면 되겠지요..
이상 허접한 답변이었습니다..^^
산적과해적 님이 쓰신 글 :
: FormKeyPress는 void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
:
: 위와같이 선언되어 있잖아요. 그 함수내에는 숫자와 산술기호만을 출력하게끔 하는 코드가 들어있는
:
: 상태입니다. 헌데 이를 버튼 클릭을 통해서 호출할수 있나요?
:
: 버튼을 누르면 해당버튼의 값을 FormKeyPress(TObject *Sender, char &Key) 에 넘겨줘서
:
: 키보드로 입력하는 것과 동일한 효과를 얻게 하고 싶은데요. Key값은 넘겨줘야하는 값일것 같고요
:
: 그런데 TObject *Sender 파라미터에는 어떤값을 넣어줘야 하는건가요?
:
: 아시는분 계시면 좀 알려주세요 (__)
:
: 아참 그리고 void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,TShiftState Shift)
:
: FormKeyUp 인데요 이것역시 어떤 파라미터값이 들어가야하는지좀 알려주세요.
|