Q&A

  • keyPress이벤트에서.......의 문제(고수님...부탁염)
처음에는 엔터값이 (#13)이 반응을 했습니다.

한참 코딩을 하다보면...다른 키값일때는 되는거 같은데....키가 #13 즉 엔터일때는 반을 을 안합니다......

그래서 확인해보니...shift와 enter를 같이 누르면 반응하더군요...

다른 키는 제데로 반응을 합니다.

근데....첨에는 enter 값도 반응을 했었다는 것이죠....

그래서 혹시나 하구...버튼들을 모두 스피드버튼으로 바꿔 봤습니다.

스피드 버튼은 포커스를 갖지 않으니까....혹시나하구....

그랬더니 되는겁니다. (키값이 엔터 값일때 반응함)

왜 이런 일이 생기는지 원인을 아시는분 안계십니까?





에디터 박스에서 키가 눌렸을때 눌린키에 따라 반응하게 할려고 제어하다가 생긴 문제입니다.

1  COMMENTS
  • Profile
    버섯 2001.11.27 00:40
    탁발승 wrote:

    > 처음에는 엔터값이 (#13)이 반응을 했습니다.

    > 한참 코딩을 하다보면...다른 키값일때는 되는거 같은데....키가 #13 즉 엔터일때는 반을 을 안합니다......

    > 그래서 확인해보니...shift와 enter를 같이 누르면 반응하더군요...

    > 다른 키는 제데로 반응을 합니다.

    > 근데....첨에는 enter 값도 반응을 했었다는 것이죠....

    > 그래서 혹시나 하구...버튼들을 모두 스피드버튼으로 바꿔 봤습니다.

    > 스피드 버튼은 포커스를 갖지 않으니까....혹시나하구....

    > 그랬더니 되는겁니다. (키값이 엔터 값일때 반응함)

    > 왜 이런 일이 생기는지 원인을 아시는분 안계십니까?

    >

    >

    > 에디터 박스에서 키가 눌렸을때 눌린키에 따라 반응하게 할려고 제어하다가 생긴 문제입니다.



    Tbutton 에서 default 라는것이 있습니다.

    그게 True 가 되어 있으면 다른곳에서 엔터값이 안먹을수가 있습니다.



    KeyPress 보다는 KeyDown Event 를 쓰는것이 좋을듯 합니다.



    KeyPress 는 일반적으로 아스키코드(1바이트)를 읽어낼때 한는것이거등요..



    따라서 F1처럼 2byte scan code 로 되어 있는것은 읽어 낼수가 없습니다..



    따라서





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

    begin

    if key = vk_return then

    begin



    end;

    if key = vk_F1 then

    begin

    end;



    end;



    위의 형식처럼 쓰는게 일반적입니다.



    그럼 즐코~