|
유영인 [Chris] 님이 쓰신 글 :
: SelStart와 SelLength 를 쓰시면 가능할것 같습니다. SelStart는, 글자수를 기준으로 해서 어디서부터 역상이 시작되는지, 그리고 SelLength는 몇문자가 역상인지 지정해주는 프로퍼티 입니다. 실은, 우리가 볼때는 줄로 나뉘어 진것처럼 보이지만, RichEdit는 하나의 긴 문자열을 엔터 문자까지 함께 가지고 있다고 생각하시면 됩니다.
:
: 가장 문제가 되는건, 각 줄이 몇번째 문자부터 시작되는지를 알아내는데가 문제인데요. 이건 메세지를 보내서 그 줄의 시작 문자점을 받아올 수 있습니다.
:
: 아래 소스는 버튼을 클릭하면 아래에 define 되어있는 줄을 (현재는 3번째 줄) 역상시키는 예제입니다.
:
:
: //---------------------------------------------------------------------------
:
: #include <vcl.h>
: #pragma hdrstop
:
: #include "Unit1.h"
: //---------------------------------------------------------------------------
: #pragma package(smart_init)
: #pragma resource "*.dfm"
: TForm1 *Form1;
: //---------------------------------------------------------------------------
: __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
: {
: }
: //---------------------------------------------------------------------------
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:
: #define TARGET_LINE 3
:
: int itSelStart;
:
:
: // 현재 줄이 몇번째 문자부터 시작되는지 알아냄
: itSelStart = RichEdit1->Perform(EM_LINEINDEX, TARGET_LINE - 1, 0);
:
: // 포커스를 옮기지 않으면, 범위 설정이 되지 않음
: RichEdit1->SetFocus();
:
: RichEdit1->SelStart = itSelStart;
: RichEdit1->SelLength = RichEdit1->Lines->Strings[TARGET_LINE - 1].Length();
:
: }
: //---------------------------------------------------------------------------
정말 감사합니다. 잘되는군요~ ^^
|