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
[22906] Re:MSN에서...
유영인.Chris [cuperido] 925 읽음    2002-11-28 16:53
Richedit에 메세지를 보내서 처리하시면 될 것 같습니다.
기본 기능만 구현해 보았습니다. 새 폼에 RichEdit를 하나 놓으시고 아래 소스를 해당하는 이벤트에 집어 넣으시면 됩니다.


//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"

TForm1 *Form1;
int    LINKSTART = 0, LINKEND = 0;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::RichEdit1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{

TPoint            tpPosition;
int               itPosition;

tpPosition.x = X;
tpPosition.y = Y;
itPosition   = RichEdit1->Perform(EM_CHARFROMPOS, 0, reinterpret_cast<LPARAM>(&tpPosition));

if(LINKSTART && LINKEND && (itPosition >= LINKSTART && itPosition <= LINKEND)) {
   RichEdit1->Cursor = crHandPoint;
  } else {
   RichEdit1->Cursor = crDefault;
}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::RichEdit1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{

TPoint            tpPosition;
int               itPosition;

tpPosition.x = X;
tpPosition.y = Y;
itPosition   = RichEdit1->Perform(EM_CHARFROMPOS, 0, reinterpret_cast<LPARAM>(&tpPosition));

if(LINKSTART && LINKEND && (itPosition >= LINKSTART && itPosition <= LINKEND))
   ShellExecute(NULL, "OPEN", "http://www.borlandforum.com/", NULL, NULL, NULL);

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{

String            stString;


RichEdit1->Lines->Clear();

RichEdit1->Lines->Add("RICHEDIT 컨트롤 테스트");
RichEdit1->Lines->Add("");

RichEdit1->Lines->Text = RichEdit1->Lines->Text + "볼랜드 포럼으로 들어가시려면 ";

RichEdit1->SelStart             = RichEdit1->Text.Length() - 1;
LINKSTART                       = RichEdit1->SelStart;
RichEdit1->SelLength            = 0;
RichEdit1->SelAttributes->Color = clNavy;
RichEdit1->SelAttributes->Style = TFontStyles() << fsUnderline;
RichEdit1->SelText              = "이곳";

RichEdit1->SelStart             = RichEdit1->Text.Trim().Length();
LINKEND                         = RichEdit1->SelStart;
RichEdit1->SelLength            = 0;
RichEdit1->SelAttributes->Color = clBlack;
RichEdit1->SelAttributes->Style = TFontStyles();
RichEdit1->SelText              = " 을 눌러주세요";

RichEdit1->Lines->Add("상단을 누르면 이동됩니다");

RichEdit1->Lines->Add("");
RichEdit1->Lines->Add("RICHEDIT 컨트롤 테스트 끝");


}
//---------------------------------------------------------------------------



maze 님이 쓰신 글 :
: MSN에서 보면.....파일 송수신할때....수락...취소....가 창에 뜨는데....
:
: 이것처럼 RichEdit에서 특정 문자가 다른 문자들과 구별이 되고 이를 클릭했을때...
:
: 특정 이벤트를 발생시키려고 합니다...
:
: 어떻게 해야 할까요?
:
: 다른 컴포넌트에서 가능한가요?
:

+ -

관련 글 리스트
22786 MSN에서... maze 566 2002/11/22
22906     Re:MSN에서... 유영인.Chris 925 2002/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.