|
이걸로 해 보세요..
void change_line_color(TRichEdit*r,int y,TColor c) // y=0 이 첫줄
{
if(y>r->Lines->Count-1)return;
r->CaretPos=TPoint(0,y);
r->SelLength=r->Lines->Strings[y].Length();
r->SelAttributes->Color=c;
}
초보 님이 쓰신 글 :
: RichEdit에서 라인의 위치를 찾아 그부분만 폰트 색깔 변하게 하는 방법중에서
: 어떤 분의 답변 중에 하나를 그대로 사용해 보았습니다..
: 그런데..
: void ChageColor(...)
: {
: ....
: char* s = (char*)malloc(sizeof(BYTE) *100);
: Form1->Memo1->Lines->Add(" --------------------");
: Form1->Memo1->SelAttributes->Color = clGreen;
: wsprintf(s," 제목...Software");
: //Form1->Memo1->Lines->Add(s); // 1.
: Form1->Memo1->Lines->Strings[Line] = s; // 2
:
: Form1->Memo1->SelAttributes->Color = clBlack;
: Form1->Memo1->Lines->Add(" --------------------");
: Line = Line + 4;
: free(s);
: ...
: }
:
: 위와 같이 1과 같이 하면 잘동작하는데..2와 같이 하면 처음 동작시 한번만 글자가 푸른색으로 나타나고
: 다음부터는 아예 글자가 생략되는군여,,
: 왜 저런 현상이 발생하죠?
: 결과)
: --------------------
: 제목...Software --> 푸른색
: --------------------
: --------------------
: --------------------
: --------------------
: --------------------
: --------------------
: --------------------
:
: 위 예제는 그냥 만들어 본거지만 원래는 Line의 위치를 위 함수를 호출할때 넘겨줍니다.
:
|