Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.063 c