|
오진욱 님이 쓰신 글 :
: 안녕하세요...저는 경남 창원에 거주하고 있는 오진욱이라고 합니다...
:
: 우리가 흔히 쓰는 TMemo 또는 TRichEdit컴포넌트에서 글자의 색상과 크기, 서체등을
: 자유자재로 바꾸고 싶은데...어떻게 해야할지...
: 예를 든다면 채팅에서 흔히 쓰는 기법으로
:
: ------------------------------------------------
: 아이디 > 안녕 친구들!!
: 아이디 > 그동안 잘있었어?
: 아이디 > 요즘 어떻게 지내?
: ------------------------------------------------
: 위에 제시한 예에서 처럼 아이디에 해당하는 부분은 파랑색으로...
: 대화 내용에 해당하는 부분은 검정색 또는 기타 다른 색상으로 표현하고 싶은데..
: 어떻게 해야 할지 감이 잡히질 않습니다...
: 한가지 고려해야할 사항은 Memo 또는 RichEdit컴포넌트에 직접적으로 문자 입력은
: 하지 않고...버퍼에서 문자열을 가져다 Add하는 방식입니다...
: 이말은 즉 폰트 다이얼로그를 사용하지 않는다는 전제하에서 입니다...
:
: 끝까지 읽어 주셔 감사합니다...
: 행복한 하루 되십시오...
임펠리테리입니다.
먼저. 당연히 메모에서는 안됩니다. 메모에서는 텍스트 전체의 폰트만 지정할 수 있으며, 일부만
폰트를 변경해서 표시할 수는 없습니다. 리치에디트만이 가능합니다.
버퍼에서 문자열을 가져와서 add한다고 하셨는데, 글쎄요... 그 버퍼에는 "아이디 >" 부분도 포함되어
있는지 아닌지에 따라 다르겠군요. 만약 버퍼를 유저마다 나누지 않고 하나만으로 사용한다면
당연히 아이디> 부분도 포함이 되어있겠고.. 이때는 문자열 검색으로 처리할 수밖에 없겠습니다.
리치에디트에서 텍스트의 특정 부분만 폰트나 다른 속성을 지정해서 다르게 하려면 selection을
지정해야 합니다. 이 selection은 SelStart와 SelLength 프로퍼티에 의해 지정되는데, SelStart가 3으로 되어
있고 SelLength가 10이라면 리치에디트에서 3번째 문자부터 10개의 문자가 반전되는 겁니다.
그러므로 아이디> 부분을 검출해내기 위해 문자열 검색을 하는 것이 좋겠군요. 특별한 다른 용도가
없다면, 새로 추가되는 라인에서 첫번째 '>' 문자까지가 아이디표시부분이 되겠죠? 안시스트링에서
문자열 검색을 위해서는 멤버함수인 Pos() 를 사용하면 되겠고..
이 정도면 원하시는 작업에 필요한 도구들은 다 마련된 셈이죠?
그럼 참고하시길...
|