|
안녕하세요.
: TEdit 의 MaxLength를 22까지 두고..
: 19 칼럼, 20 칼럼을 각각 0x80보다 큰가를 검색해서 하는 방법은 어떨까요??
이 역시 똑같은 문제가 발생할 것 같습니다.
: 한가지 덧붙여 질문 드리자면 OnKeyPress 이벤트가 정확하게 동작하는 시점이 언제 인가요??
OnKeyPress 이벤트는 OnKeyDown -> OnKeyPress -> OnKeyUp 이렇게 발생됩니다.
KeyPress는 키 입력 하나가 완성되면 즉, 한 단위로 측정할 수 있는 키 하나가 눌려지면 발생됩니다.
엄밀히 더 정확히 말해서는
OnKeyDown -> OnKeyPress -> Edit 처리 및 화면 표시 -> OnKeyUp
이런 단계로 이루어지고, 처리 및 화면 표시가 이루어 지기 전인 KeyPress 이벤트에서
인자인 Key를 Key = 0 으로 설정해 주시면 키 처리가 취소됩니다.
: 결론이 영문이던, 한들이던, 어떤키를 누르던 1만 증가한다는 겁니다.
: 더군다나 한글은 키를 누를때가 아니라 한글자를 완성하고 커서가 움직여야 비로서 증가한다는 거죠..
: 이부분에 대해서도 설명 부탁드리겠습니다. (__);;;
한글을 입력하셨는데 1이 증가한다는건 무슨 뜻인지 잘 이해가 가지 않습니다.
'안' 이라는 글자를 입력했는데, Text.Length() 에서 1이 나오는 것은 charset 에 문제가
있을수도 있습니다. 그리고, 한 글자를 완성하고 키를 움직이면 증가하는 것은 위의 KeyPress
발생 순서의 이유와 동일합니다. (KeyUp에 넣어주시면 이 문제는 해결될 수 있습니다)
cuperido
유랑 님이 쓰신 글 :
: 답변 감사드립니다.
:
: 다른 방법을 다시 한번 강구해 봐야 겠네요..^^;;
:
: TEdit 의 MaxLength를 22까지 두고..
:
: 19 칼럼, 20 칼럼을 각각 0x80보다 큰가를 검색해서 하는 방법은 어떨까요??
:
: 한가지 덧붙여 질문 드리자면 OnKeyPress 이벤트가 정확하게 동작하는 시점이 언제 인가요??
:
: void __fastcall TfrmMain::Edit_KeyPress(TObject *Sender, char &Key)
: {
: int nLength;
: nLength = dynamic_cast<TEdit *>(Sender)->Text.Length();
:
: Caption = nLength;
: }
:
: 라는 간단한 소스를 이용해서 테스트 해봤는데요,
:
: 결론이 영문이던, 한들이던, 어떤키를 누르던 1만 증가한다는 겁니다.
: 더군다나 한글은 키를 누를때가 아니라 한글자를 완성하고 커서가 움직여야 비로서 증가한다는 거죠..
: 이부분에 대해서도 설명 부탁드리겠습니다. (__);;;
|