C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[12963] Re:Re:Re:Edit에서 숫자(데이터) 입력 후 Enter를 쳤을 때.....
박재욱.사탕 [] 1390 읽음    2001-11-22 13:22
어. 이상하네요.. ㅡㅡ;

KeyPress랑 KeyDown에 대한 차이는 제가 도움말에서 갈무리를 해서요,, 대충 설명을 드리자면요..

1.OnKeyPress

  Occurs when a user presses a single character key.

typedef void __fastcall (__closure *TKeyPressEvent)(System::TObject* Sender, char &Key);
__property TKeyPressEvent OnKeyPress = {read=FOnKeyPress, write=FOnKeyPress};

Description

Use the OnKeyPress event handler to make something happen as a result of a single character key press.

The Key parameter in the OnKeyPress event handler is of type Char; therefore, the OnKeyPress event registers the ASCII character of the key pressed. Keys that don't correspond to an ASCII Char value (Shift or F1, for example) don't generate an OnKeyPress event. Key combinations (such as Shift+A), generate only one OnKeyPress event (for this example, Shift+A results in a Key value of 밃?if Caps Lock is off). To respond to non-ASCII keys or key combinations, use the OnKeyDown or OnKeyUp event handlers.
  ==> 이 이벤트는요.. 하나의 키값에 대해서만 반응을 한다는 내용이에요. 즉 아스키 값이 있는 키의
  누름에 대한 이벤트라는거에요.
  예를 들어 a,b,c,1,2,3...등은 각 키에 대해 아스키 값이 있는데..
   Shift나 F1키등은 아니라는거죠.. 위 설명에서 예로든거를 보면 Shift+A를 누르면
  이 이벤트에서는 A만을 받아들인다는겁니다.
  그래서 아스키값이 없는 키에 대해 이벤트를 쓸려면 OnKeyDown or OnKeyUp 을 쓰라는내용이구요.

2.OnKeyDown 
 
  Occurs when a user presses any key while the control has focus.

typedef void __fastcall (__closure *TKeyEvent)(System::TObject* Sender, Word &Key, Classes::TShiftState Shift);
__property TKeyEvent OnKeyDown = {read=FOnKeyDown, write=FOnKeyDown};

Description

Use the OnKeyDown event handler to specify special processing to occur when a key is pressed. The OnKeyDown handler can respond to all keyboard keys, including function keys and keys combined with the Shift, Alt, and Ctrl keys, and pressed mouse buttons.

The TKeyEvent type points to a method that handles keyboard events.

The Key parameter is the key on the keyboard. For non-alphanumeric keys, use WinAPI virtual key codes to determine the key pressed. For more information, see Virtual Key codes.

The Shift parameter indicates whether the Shift, Alt, or Ctrl keys are combined with the keystroke.

===> 이놈은 1번에서 불가능했던 가상키의 눌림에 대한 이벤트 처리를 해준다고 보시면 되요.
   이벤트 함수의 전달인자를 보시면 하나가 더있죠?

non-ASCII Key와 ASCII Key의 차이에 대해 설명을 해드리고 싶은데..
제가 지식이 부족해서요.. 자료를 찾아봐야 할것 같아서요..

그리고 Edit에서 엔터키를 눌렀을경우에는
저는 OnKeyDown 를 쓰거든요,, 제가 알려드렸듯이요..
이놈으로 또 쓰이는게,,, 엔터키를 탭키처럼쓰는 방법이라든가..
ESC키를 누르지 못 하게 한다든가.. 할때 쓰는데...

일단은 이렇구요..

제가 틀렸을 수도 있구요,,
아님 코드상에 다른 에러가 있을수도 있을것 같습니다..
아무쪼록 잘 해결 하시길 빌겠습니다..

제가 나중에 질문 올리면 제꺼도 답변 좀 해주세요~~
수고하세요~

heartsim 님이 쓰신 글 :
: 안녕하세요.답변 감사합니다.^^
: 근데 말씀대로 해봤는데 Enter키를 눌렀을 때 Edit내용이 GBgrid에 전달이 안되더라구요.
: 아무런 반응도 하지 않는군요.
: 제가 OnKeyDown를 써서 Edit에 숫자를 증가 감소시키도록 한 소스에 5번째로 VK_RETURN을 써서
: 말씀대로 했는데 안 되는군요.
: switch(key)
: {
:          case VK_LEFT:
:          case VK_UP:    1씩 증가..................
:          case VK_RIGHT:
:          case VK_DOWN:  1씩 감소..................
:
:   --->   case VK_RETURN: Edit내용을 엔터쳤을 때 GBgrid에 표시토록 함
: }
:
: 전에는 OnKeyPress이벤트를 써서 조금 됐는데, 소스상에 문제가 있어서 그런지 됐다 안 됐다 하거든요.
: 그래서 질문을 드렸는데, 바쁘신 중에 죄송하지만 OnKeyPress와 OnEnter 그리고 VK_RETUR의 차이점에
: 대해 답변 주시면 감사하겠습니다.^^
:
: 즐거운 하루 되세요.
:
:
:
: 박재욱.사탕 님이 쓰신 글 :
: : OnKeyDown()에서요.
: : if(Key == VK_RETURN){
: :   작업 내용..
: :   ...........
: : }
: : 하시면 될꺼에요.
: :
: : heartsim 님이 쓰신 글 :
: : : 안녕하세요.
: : : 빌더 초보입니다.
: : : 한참 프로그램을 짜고 있는데, 의외로 쉽게 생각했던 것이 잘 안되서요.
: : :
: : : 다름 아니오라, Edit컴포넌트에 숫자를 입력한 후 Enter키를 쳤을 때 데이터가
: : : GBgrid필드에 입력되게 할려고 하는데, 그 때 사용하는 이벤트가 무엇인지요...
: : : OnEnter와 OnKeyPress 이벤트 중에 하나가 아닌가 듯 싶은데요...잘 안되서요..^^
: : :
: : : 답변 부탁드립니다.
: : :
: : : 즐거운 하루되세요.....

+ -

관련 글 리스트
12957 Edit에서 숫자(데이터) 입력 후 Enter를 쳤을 때..... heartsim 872 2001/11/22
12960     Re:Edit에서 숫자(데이터) 입력 후 Enter를 쳤을 때..... 박재욱.사탕 958 2001/11/22
12961         Re:Re:Edit에서 숫자(데이터) 입력 후 Enter를 쳤을 때..... heartsim 960 2001/11/22
12963             Re:Re:Re:Edit에서 숫자(데이터) 입력 후 Enter를 쳤을 때..... 박재욱.사탕 1390 2001/11/22
12962             Re:Re:Re:Edit에서 숫자(데이터) 입력 후 Enter를 쳤을 때..... 강요찬 1223 2001/11/22
12985                 Re:Re:Re:Re:Edit에서 숫자(데이터) 입력 후 Enter를 쳤을 때..... heartsim 1066 2001/11/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.