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

델파이 팁&트릭
Delphi Programming Tip&Tricks
[150] [팁] 리치에디트 편집한계의 진실은...?
박지훈.임프 [cbuilder] 16528 읽음    1999-06-04 00:00
오늘도.. 간단한 팁 하나로 즐겁고 보람있게 하루를 시작합시다.. ^^;;

흔히 TRichEdit 객체는 TMemo와는 달리 64k 이상의 문서를 편집할 수 있다고들
할고 있죠.. 근데 막상 해보면 잘 안됩니다.
(리치에디트)->Lines->LoadFromFile() 메소드를 써서 화일을 불러올때는 엄청 큰
화일도 불러오는데, 불러온 화일이 아닌, 작은 화일에 추가할 때는 32k 까지의
글자만 편집가능하구, 그 이상은 한문자를 지우면 한문자를 입력가능한..
웃기는 상태죠..

의심나는 분은 일일이 글자를 쳐서 테스트 해보실수는 없으실거구,
어느정도의 텍스트를 카피해서 클립보드에 저장해뒀다가 새로 실행한
프로그램의 리치에디트에 페이스트(붙이기) 해보세요. 어느정도에서
한계에 부딛혀서, 실제로 입력가능한 글자는 대략 7천개가 약간 넘습니다.
그 상태에서 글자를 쳐보면.. 황당하게도 아무 글자도 쳐지지 않습니다.
한 글자를 지우면 한글자 입력가능하고.. 명백하게 한계가 있다는걸 보여주는거죠.
그럼.. 도대체 불러올때는 큰화일도 불러오면서, 왜 그냥 편집시엔 그렇게 안될까..?
사실 리치에디트의 정확한 편집 한계는 약 4.5메가 정도 됩니다.
그런데 왜 입력시엔 그렇게 안되는걸까...?

비밀은... 헤헤~ (아는척 재기는.... --;;;;)
리치에디트의 메시지인 EM_EXLIMITTEXT에 있습니다.
원래 리치에디트를 생성하면, 디폴트로 편집한계가 32k로 잡힙니다.
(7000개 정도의 문자밖에 안들어가는 것은 아마도 해당 폰트정보와 정렬정보
때문으로 생각됩니다.)

이것을 변경하려면 위의 EM_EXLIMITTEXT 메시지를 리치에디트 컨트롤로 보내면
되는거죠.. 뭐.. 간단하죠? 메시지를 보내는것은 SendMessage()나 PostMessage(),
Perform() 중에서 아무거나 골라서 쓰면 되구요. 그러니깐,
리치에디트의 편집한계를 4메가로 재설정하려면 다음과 같이하면 되죠..
SendMessage(RichEdit1->Handle, EM_EXLIMITTEXT, 0, 4194304);

간단하죠? 하지만.. 제가 알기론 이 간단한 팁을 아는 분은 많지 않답니다.
몇달전에 리치에디트 때문에 골치를 썩이면서 리치에디트의 모든 메시지를
다 뒤적거리다가 우연히 알게 된겁니다.
필요하신 분께 많은 도움이 되길 바랍니다.

그럼... 임프의 오늘의 팁 끄읕~~!



독립문에서 임펠리테리였습니다.


+ -

관련 글 리스트
150 [팁] 리치에디트 편집한계의 진실은...? 박지훈.임프 16528 1999/06/04
(링크)     C++Builder Tip'N Tricks > [팁] 리치에디트 편집한계의 진실은...?
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.