Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.11;
Скачать: CL | DM;

Вниз

Richedit + ссылки   Найти похожие ветки 

 
able ©   (2004-03-22 07:38) [0]

Здраствуйте, ув. Мастера! У меня вопрос: как сделать обработку ссылок в RichEdit"е? Ну, что бы она (ссылка) меняла цвет, аттрибуты и при клике открывался дефолтный браузер (ну или почтовик) с этой ссылкой. Спасибо..


 
TUser ©   (2004-03-22 08:36) [1]

Обрабатывать OnMouseMove и OnClick


 
Piople ©   (2004-03-22 08:38) [2]


> TUser

Ага, а как ты будешь определять что находится над ссылкой


 
able ©   (2004-03-22 11:38) [3]

>Обрабатывать OnMouseMove и OnClick
А как выделять их?


 
easy ©   (2004-03-22 12:24) [4]

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls, RichEdit, shellapi;

type
 TLinkRichEdit = class(TRichEdit)
 private
   procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
 public
   procedure CreateWnd; override;
 end;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
 private
   LinkRichEdit: TLinkRichEdit;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

{ TLinkRichEdit }

procedure TLinkRichEdit.CNNotify(var Message: TWMNotify);
type
 PENLink = ^TENLink;

 procedure CheckLinkMessage(EmLink: PENLink);
 var
   LinkText: string;
   LinkStart, LinkLength: Integer;
 begin
   if EMLInk.msg = WM_LBUTTONDOWN then begin
     LinkStart := EMLink.chrg.cpMin + 1;
     LinkLength := EMLink.chrg.cpMax - EMLink.chrg.cpMin;
     LinkText := Copy(Lines.Text, LinkStart, LinkLength);
     ShellExecute(0, "open", PChar(LinkText), "", "", SW_SHOW);
   end;
 end;

begin
 if Message.NMHdr^.code = EN_LINK then
   CheckLinkMessage(PEnLink(Message.NMHdr));
 inherited;
end;

procedure TLinkRichEdit.CreateWnd;
var
 EventMask: Longint;
begin
 inherited;
 SendMessage(Handle, EM_AUTOURLDETECT, 1, 0);
 EventMask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0) or ENM_LINK;
 SendMessage(Handle, EM_SETEVENTMASK, 0, EventMask);
end;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
 LinkRichEdit := TLinkRichEdit.Create(self);
 LinkRichEdit.Parent := form1;
 LinkRichEdit.Align := alClient;
 LinkRichEdit.Lines.Add("http://delphimaster.net/view/1-1079930286/");
 LinkRichEdit.Lines.Add(">>> http://216.101.185.148/scripts/isapi.dll/article?id=1E04BE4F&article=4207475 <<<");
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 LinkRichEdit.Free;
end;

end.


 
able ©   (2004-03-22 13:13) [5]

Спасибо! Ща буду юзать :)


 
Serge ©   (2004-03-22 13:16) [6]

Also, look at:  http://www.lmc-mediaagentur.de/dpool.htm


 
able ©   (2004-03-22 13:58) [7]

ok!


 
able ©   (2004-03-22 15:01) [8]

>all, easy
А можно ещё вопрос. Надо, что бы, допустим, не только вида http://******.*** или mailto:*****, а допустим надпись "ооо" являлась ссылкой и ссылалась на http://www.****.**. Вроде всё..



Страницы: 1 вся ветка

Текущий архив: 2004.04.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
7-1080207035
Insert
2004-03-25 12:30
2004.04.11
Инфо о жестком диске


7-1080146989
$tranger
2004-03-24 19:49
2004.04.11
HOOKs


1-1082452602
Relaxxx
2004-04-20 13:16
2004.04.11
Как мне узнать какой будет следующий месяц програмно...


14-1081789281
Инкогнито
2004-04-12 21:01
2004.04.11
Азбука Морзе!


1-1082436256
R
2004-04-20 08:44
2004.04.11
Локальную и много или нет но одну?