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
[2781] Re:[질문]TMemo컴포넌트에서 Font 설정
박지훈.임프 [cbuilder] 4751 읽음    2000-01-19 00:00
오진욱 님이 쓰신 글 :
: 안녕하세요...저는 경남 창원에 거주하고 있는 오진욱이라고 합니다...
:
: 우리가 흔히 쓰는 TMemo 또는 TRichEdit컴포넌트에서 글자의 색상과 크기, 서체등을
: 자유자재로 바꾸고 싶은데...어떻게 해야할지...
: 예를 든다면 채팅에서 흔히 쓰는 기법으로
:
: ------------------------------------------------
: 아이디 > 안녕 친구들!!
: 아이디 > 그동안 잘있었어?
: 아이디 > 요즘 어떻게 지내?
: ------------------------------------------------
: 위에 제시한 예에서 처럼 아이디에 해당하는 부분은 파랑색으로...
: 대화 내용에 해당하는 부분은 검정색 또는 기타 다른 색상으로 표현하고 싶은데..
: 어떻게 해야 할지 감이 잡히질 않습니다...
: 한가지 고려해야할 사항은 Memo 또는 RichEdit컴포넌트에 직접적으로 문자 입력은
: 하지 않고...버퍼에서 문자열을 가져다 Add하는 방식입니다...
: 이말은 즉 폰트 다이얼로그를 사용하지 않는다는 전제하에서 입니다...
:
: 끝까지 읽어 주셔 감사합니다...
: 행복한 하루 되십시오...



임펠리테리입니다.

먼저. 당연히 메모에서는 안됩니다. 메모에서는 텍스트 전체의 폰트만 지정할 수 있으며, 일부만
폰트를 변경해서 표시할 수는 없습니다. 리치에디트만이 가능합니다.

버퍼에서 문자열을 가져와서 add한다고 하셨는데, 글쎄요... 그 버퍼에는 "아이디 >" 부분도 포함되어
있는지 아닌지에 따라 다르겠군요. 만약 버퍼를 유저마다 나누지 않고 하나만으로 사용한다면
당연히 아이디> 부분도 포함이 되어있겠고.. 이때는 문자열 검색으로 처리할 수밖에 없겠습니다.

리치에디트에서 텍스트의 특정 부분만 폰트나 다른 속성을 지정해서 다르게 하려면 selection을
지정해야 합니다. 이 selection은 SelStart와 SelLength 프로퍼티에 의해 지정되는데, SelStart가 3으로 되어
있고 SelLength가 10이라면 리치에디트에서 3번째 문자부터 10개의 문자가 반전되는 겁니다.

그러므로 아이디> 부분을 검출해내기 위해 문자열 검색을 하는 것이 좋겠군요. 특별한 다른 용도가
없다면, 새로 추가되는 라인에서 첫번째 '>' 문자까지가 아이디표시부분이 되겠죠? 안시스트링에서
문자열 검색을 위해서는 멤버함수인 Pos() 를 사용하면 되겠고..

이 정도면 원하시는 작업에 필요한 도구들은 다 마련된 셈이죠?
그럼 참고하시길...

+ -

관련 글 리스트
2773 [질문]TMemo컴포넌트에서 Font 설정 오진욱 3747 2000/01/19
2781     Re:[질문]TMemo컴포넌트에서 Font 설정 박지훈.임프 4751 2000/01/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.