Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.059 c
1-1082424190
kaif
2004-04-20 05:23
2004.04.11
Как узнать текущий номер билда?


6-1075972007
Aleksey093
2004-02-05 12:06
2004.04.11
Подскажите пожалуйста про IdDNSResolver


14-1082017548
blackman
2004-04-15 12:25
2004.04.11
Как программно обновить список установленного оборудования ? [D6,


1-1080136038
Тимохов
2004-03-24 16:47
2004.04.11
Lex and Yacc


1-1082430074
-Maximus-
2004-04-20 07:01
2004.04.11
PopupMenu





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский