Q&A

  • 키코드가 겹치는데 어떻게 된건가요?
FormKeyDown이나 Up 이벤트에서 사용하는 VK_ 시리즈 있잖아요?

이게 일반 아스키번호랑 번호가 겹치는 군요.

예를들어 아래와 같은 소문자 z와 VK_F11이 눌러졌는지 체크하는 코드가 있다면요...



Form1.FormKeyDown(...)

begin

case Key of

'z': begin

...

end;

VK_F11: begin

...

end;

end;

end;



이렇게 코딩을하면 키가 중복된다는 에러가 납니다.

실제로 'z'와 VK_F11은 똑같은 122(십진수)라는 값을 가지고 있군요.

VK_... 시리즈는 윈도의 API에서 그대로 가져오는 값으로 알고 있는데,

이거 윈도 API가 잘못된 것인가요?

아니면 델파이의 버그인가요?

(이게 버그라면 아직까지 안잡혔을리가 없는데...)



만약에 꼭 소문자 z와 펑션키 F11 입력을 구분해서 받아야 하는 상황이라면 어떻게 해야만 할까요?



아시는 분의 메일 부탁합니다. (skywalke@netian.com)

그럼...

1  COMMENTS
  • Profile
    최용일 2000.08.02 06:27
    안녕하세요. 최용일입니다.



    가상키에는 소문자는 없습니다. 소문자 'z'키가 눌린다면 Key값은 대문자 'Z'키와 같고



    Shift파라매터가 ssShift값을 가집니다. 절대 중복이 않되죠..



    ^^ 항상 즐코하세요.



    Form1.FormKeyDown(...)

    begin

    case Key of

    'Z':

    begin

    if Shift in [ssShift] then

    ShowMessage('소문자 z키가 눌려졌습니다.');

    end;



    VK_F11:

    begin

    ShowMessage('펑션키 F11이 눌려졌습니다.');

    end;

    end;

    end;

    >

    사공엽 wrote:

    > FormKeyDown이나 Up 이벤트에서 사용하는 VK_ 시리즈 있잖아요?

    > 이게 일반 아스키번호랑 번호가 겹치는 군요.

    > 예를들어 아래와 같은 소문자 z와 VK_F11이 눌러졌는지 체크하는 코드가 있다면요...

    >

    > Form1.FormKeyDown(...)

    > begin

    > case Key of

    > 'z': begin

    > ...

    > end;

    > VK_F11: begin

    > ...

    > end;

    > end;

    > end;

    >

    > 이렇게 코딩을하면 키가 중복된다는 에러가 납니다.

    > 실제로 'z'와 VK_F11은 똑같은 122(십진수)라는 값을 가지고 있군요.

    > VK_... 시리즈는 윈도의 API에서 그대로 가져오는 값으로 알고 있는데,

    > 이거 윈도 API가 잘못된 것인가요?

    > 아니면 델파이의 버그인가요?

    > (이게 버그라면 아직까지 안잡혔을리가 없는데...)

    >

    > 만약에 꼭 소문자 z와 펑션키 F11 입력을 구분해서 받아야 하는 상황이라면 어떻게 해야만 할까요?

    >

    > 아시는 분의 메일 부탁합니다. (skywalke@netian.com)

    > 그럼...