Главная страница
    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.04 c
7-1076164544
Nekto
2004-02-07 17:35
2004.04.11
Boot


3-1078987844
SAMOVAR
2004-03-11 09:50
2004.04.11
как из Делфи обратиться к объекту FastReport?


1-1082741990
Lena19
2004-04-23 21:39
2004.04.11
checkbox1.Font.Color:=clred; а в ответ тишина


1-1080304137
Rusty
2004-03-26 15:28
2004.04.11
Открытие доп. окна после запуска приложения...


1-1080031832
Artem03
2004-03-23 11:50
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский