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

델파이 Q&A
Delphi Programming Q&A
[10140] Re:[질문]Richedit에 대해서..
박지훈.임프 [cbuilder] 1164 읽음    2005-07-01 15:25
질문이 좀 이상한데... OnKeyUp이나 OnKeyDown에서는 에디트나 리치에디트 등에 입력되는 키를 제어할 수 없습니다.
키를 막으려면 OnKeyPress 밖에 안되지요. 두번째 코드에서 키를 #0로 쓰신 걸 봐서는 OnKeyPress를 OnKeyDown로
착각하신 거 같구요.

그리고 한글의 경우 말씀하신 것처럼 OnKeyPress에서도 막을 수 없습니다. 한글을 막으려면 방법이 없는 것은 아니지만
적어도 영문 기준으로 만들어진 TEdit, TMemo, TRichEdit에서는 안됩니다. 일단 한글이 입력될 때 발생하는 메시지도
좀 다르고, 그리고 그런 목적으로라면 메시지를 가로채는 것보다는 TCustomEdit.Change 메소드를 가로채서 새로운
컴포넌트를 만들면 되긴 하겠지요.

하지만 최대 입력 문자수를 제한하기 위해서라면 그냥 단순히 MaxLength 속성에서 10으로 설정해버리면 되는데요.
다른 목적이 있다면 모르지만요.

그럼...


란티아 님이 쓰신 글 :
: 안녕 하세요..
:
:
: RichEdit 의 KeyUp 이벤트에서
:
: Label1.Caption := Format( '%d', [ length( RichEdit1.Text ) ] );
:         if length( RichEdit1.Text ) > 10 Then
:         Begin
:           Key := 0;
:         End;
:
: 이런씩으로 해봤습니다.
: 근데.. 10바이트가 넘어도 출력된 글자가 있더군요..
:
: 그런데..
:
: RichEdit의 KeyDown 이벤트에서
:
: Label1.Caption := Format( '%d', [ length( RichEdit1.Text ) ] );
:         if length( RichEdit1.Text ) > 10 Then
:         Begin
:           Key := #0;
:         End;
:
: 이렇게 했을 경우..
:
: 영문일 경우는 10바이트가 넘을 경우 찍히지가 않더군요.
:
: 근데.. 여전히. 한글일 경우는 아예 Keydown이벤트로 들어 오지 않습니다.
:
: 한글일경우의 방법은 없는지요. .
:
: KeyUp일 경우는 벌써 Richedit에 글자가 써지고 난 후라서 쓴 글자의 크기를
:
: 구한게 가능했던것 같은데요..
:
: 근데. 문제는 넘었을 경우.. 다시 지운다던가.. 이런 동작을 해야 할것 같은데
:
: 그 부분에 대해서는 잘 모르겠네요..
:
: 읽어 보시구.. 좋은 방법이 있으시면. 답변 부탁드립니다..
:
: 그럼.. 좋은 하루 보내세요..

+ -

관련 글 리스트
10129 [질문]Richedit에 대해서.. 란티아 967 2005/06/27
10140     Re:[질문]Richedit에 대해서.. 박지훈.임프 1164 2005/07/01
10142         Re:Re:[질문]Richedit에 대해서.. 란티아 1313 2005/07/02
10143             Re:Re:Re:[질문]Richedit에 대해서.. 박지훈.임프 2195 2005/07/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.