|
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();
}
//---------------------------------------------------------------------------
이용주 님이 쓰신 글 :
: 글자위에서 더블클릭을 하게 되면 그 글자만 선택된것 처럼 보입니다.
: RichEdit에서 이러한 기능을 사용해서 한줄이 모두 선택된것 처럼 역상처리를 하는 방법을 알고 싶습니다. 마치 한줄을 모두 드래고 해서 선택한것과 같은 거지요..
: 아시는 분들의 답변 부탁드립니다. 넘 초보라서 죄송합니다. 그럼 이만..
|