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
[6850] 이렇게 하는게 맞는지 모르겠네요.. 참고만.
서정태 [] 2712 읽음    2001-04-16 15:19
전재득 님이 쓰신 글 :
: 텍스트 에디터를 만들고 있는데요...
:
: RichEdit 를 사용해서 특정한 위치의 문자의 색이나 크기 등을 변경하고
:
: 파일로 저장해서 처음 작성시와 똑같은 색과 크기로 출력하고 싶은데요...
:
: 방법이 없을까요? Font 값은 전체가 아니라 개별적인 것이겠죠 --;
:
:

저두 궁금하기도 해서 한번 찾아봤습니다. TCustomRichEdit의 WMSetFont함수에서 실마리를 찾았습니다.
보니깐 결국엔 SendMessage()함수를 사용해서 글자색을 바꾸더군요.
제가 지금 빌더를 안깔아서 델파이로 작업하고 있기 때문에 델파이로 해본 코드를 그냥 붙여넣기 해서
빌더 형식으로 바꾼거니깐 약간의 실수가 있을지도 모르겠습니다.

우선 폼에 TRichEdit와 버튼 세개를 추가 합니다. 그래서 Button1은 색깔바꾸기, Button2는 저장하기, Button3은 불러오기 입니다.
그리고 Comctrls.hpp를 추가해 주셔야 됩니다.
#include <Comclrls.hpp>

void __fastcall TForm1::Button1Click(TObject* Sender)  // 색깔바꾸기
{
  TCharFormat Format;

  if (RichEdit1->SelText != "")
  {
    ZeroMemory(&Format, sizeof(TCharFormat));
    Format.cbSize = sizeof(TCharFormat);
    Format.bPitchAndFamily = DEFAULT_PITCH;
    Format.crTextColor = clBlue;
    Format.dwMask = CFM_COLOR;

    SendMessage(RichEdit1->Handle, EM_SETCHARFORMAT, SCF_SELECTION, LPARAM(&Format));
  }
}

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  if (SaveDialog1->Execute())
    RichEdit1->Lines->SaveToFile(SaveDialog1->FileName);
}

void __fastcall TForm1::Button3Click(TObject* Sender)
{
  if (OpenDialog1->Execute())
  {
    RichEdit1->Clear();
    RichEdit1->Lines->LoadFromFile(OpenDialog1->FileName);
  }
}
그리고 색깔외에 글자 크기 등등을 바꾸기 원하시면 위의 TCharFormat 구조체의 멤버중에
Format.yHeight 등을 바꿔주시면 됩니다.
EM_SETCHARFORMAT, CharFormat 등에 대한 도움말을 참조하시면 좀더 잘 하실수 있을듯..

그럼 수고하세요~~

+ -

관련 글 리스트
6833 [질문] RichEdit 에서 Font 변환한 데이터 파일로 저장해서 읽어오기 전재득 2583 2001/04/15
6865     Re:[질문] RichEdit 에서 Font 변환한 데이터 파일로 저장해서 읽어오기 방태윤 3019 2001/04/17
6850     이렇게 하는게 맞는지 모르겠네요.. 참고만. 서정태 2712 2001/04/16
6858         Re:이렇게 하는게 맞는지 모르겠네요.. 참고만. 전재득 2298 2001/04/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.