Главная страница
    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.044 c
1-1082621797
[BAD]Angel
2004-04-22 12:16
2004.04.11
onTop


4-1078985761
Андрей Ш.
2004-03-11 09:16
2004.04.11
Как запретить смену даты.


4-1079468997
vpv
2004-03-16 23:29
2004.04.11
Проблемы с SetEntriesInAcl


1-1082918802
Soldier
2004-04-25 22:46
2004.04.11
Народ, есть вопрос про TChart


1-1079681993
pavlov
2004-03-19 10:39
2004.04.11
Как программно закрыть окно с сообщением





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский