Q&A

  • 키값이 제어키 또는 일반 문자키 인지를 아는 함수가 있나요?
KeyDown 또는 KeyPress에서 변수 Key가 넘어 오는데..

이 Key가 제어키(F1, Tab, Shift, Ctrl, Alt, NumKey, 방향키 등) 인지,
일반 문자키('a', '1', 'A' 등) 인지를 아는 방법이 있을 까요?

그럼 즐코하세요.
2  COMMENTS
  • Profile
    서기원 2004.07.22 01:51
    OnKeyDown을 help에서 찾아보시면,

    type
      TKeyEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object;

    에서 Shift, Alt, Ctrl키가 눌린 상태인지는 Shift값을 조사하여 알 수 있고,

    F1키, 방향키는 Key변수의 값을 비교하여 알 수 있습니다.

    예를 들어,

    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if (ssShift  in Shift) then  //Shift키가 눌린상태
        ...
      if (Key = VK_F1) then  //F1키가 눌렸을 때
        ...
      if (Key = VK_LEFT) then //방향키에서 왼쪽화살표키가 눌렸을 때
        ...
      if (Key = VK_TAB) then  //Tab키
        ...
      if (Key = VK_NUMPAD0) then //Numpad의 '0' 키
        ...
    end;

    VK_F1, VK_LEFT등은 Windows에 정의되어 있습니다.
    도움이 되셨길 바라면서..

  • Profile
    김길남 2004.07.22 02:32
    답변은 감사합니다.
    그러나 원하는 답은 이게 아니네요.
    이거를 간단하게 처리할 수 있는 함수를 알고자 합니다.
    C에있는 함수중에 변수의 키값이 제어문자인지 일반 문자인지를
    검사해서 돌려주는 함수가 있습니다.

    델파이도 이과 같은 함수가 있을거라 생각합니다.