Q&A

  • KeyDown, KeyPress 이벤트
[질문] KeyDown, KeyPress 이벤트에 대해 전반적인 지식을 알고싶습니다.



예를들어, KeyDown, KeyPress 이벤트에서 키값을 알고 싶습니다.

제가 해 보니깐, 키보드 자판상에서 'Delete' 키값이 KeyDown에서는

46으로 나옵니다. 그런데 KeyPress에서는 키값이 나오지 않습니다.

왜인가요? 그래서 이렇게 질문합니다. 아주 급합니다. 도와주세요...

1  COMMENTS
  • Profile
    이주흥 1999.08.26 19:30
    걸음마 초보 께서 말씀하시기를...

    > [질문] KeyDown, KeyPress 이벤트에 대해 전반적인 지식을 알고싶습니다.

    >

    > 예를들어, KeyDown, KeyPress 이벤트에서 키값을 알고 싶습니다.

    > 제가 해 보니깐, 키보드 자판상에서 'Delete' 키값이 KeyDown에서는

    > 46으로 나옵니다. 그런데 KeyPress에서는 키값이 나오지 않습니다.

    > 왜인가요? 그래서 이렇게 질문합니다. 아주 급합니다. 도와주세요...



    제가 알고 있는데 까지 말씀드리죠..

    우선 두 프로시저의 파라메터를 보시면 key라는 파라메터가 있습니다.

    변수는 동일하지만 datatype이 다르죠 keydown 은 word형이고

    keypress는 char형 입니다.

    그래서 keydown 이벤트에서 key값으로 줄수 있는것은 WINAPI 가상키 값

    만 줄수 있습니다...(가상키에 대해서는 직접 찾아보시길....)

    그리고 keypress 이벤트에서는 key값으로 char형을 줘야 하는데

    이건 우리가 흔히 알고 있는 아스키 값을 말하는 겁니다...



    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;

    Shift: TShiftState);

    begin

    key := 46; //46은 del의 가상키값

    end;



    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

    begin

    key := #91; //91은 '['의 아스키값(10진수

    end;



    위와같이 코딩해서 어떻게 돌아가는지 생각해보시면

    필이 오실겁니다..

    그럼 이상 졸변 이었습니다...