![]() |
EMail-Adressen und URL's in Memo oder Richedit hervorheben
Hallo...
ich möchte in einem Memo oder Richedit Text eingeben. Wenn Emailadressen oder URL's eingegeben werden, so müssen diese "automatisch" verlinkt werden. Mit dem Code klappt das schon ganz gut, nur will ich nicht immer ein mailto: vor die Mailadresse eingeben, damit diese als solche erkannt wird. Gruß Steven
Delphi-Quellcode:
}
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) RichEdit1: TRichEdit; RichEdit2: TRichEdit; procedure FormCreate(Sender: TObject); private procedure InitRichEditURLDetection(RE : TRichEdit); public { Public declarations } protected procedure WndProc(var Msg: TMessage); override; end; var Form1: TForm1; implementation {$R *.dfm} uses ShellApi, RichEdit; procedure TForm1.InitRichEditURLDetection(RE: TRichEdit); var mask: Word; begin mask := SendMessage(RE.Handle, EM_GETEVENTMASK, 0, 0); SendMessage(RE.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); SendMessage(RE.Handle, EM_AUTOURLDETECT, Integer(True), 0); end; procedure TForm1.FormCreate(Sender: TObject); var s: string; begin InitRichEditURLDetection(RichEdit1); s:='Great Delphi tutorials and articles at ' + 'http://www.delphi.about.com.' + #13#10 + 'About Delphi Programming site!' + #13#10 + 'Send an email to your Guide: mailto:delphi.guide@about.com'; RichEdit1.Text := s; s:= 'http://www.delphi.about.com. ' + ' This Rich Edit does not recognize URLs!'; RichEdit2.Text := s end; procedure TForm1.WndProc(var Msg: TMessage); var p: TENLink; sURL: string; CE : TRichEdit; begin if (Msg.Msg = WM_NOTIFY) then begin if (PNMHDR(Msg.lParam).code = EN_LINK) then begin p := TENLink(Pointer(TWMNotify(Msg).NMHdr)^); if (p.Msg = WM_LBUTTONDOWN) then begin try CE := TRichEdit(Form1.ActiveControl); SendMessage(CE.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg))); sURL := CE.SelText; ShellExecute(Handle, 'open', PChar(sURL), 0, 0, SW_SHOWNORMAL); except end; end; end; end; inherited; end; (* TForm1.WndProc *) end. (* unit1.pas *) { ******************************************** Zarko Gajic About.com Guide to Delphi Programming [url]http://delphi.about.com[/url] email: [email]delphi.guide@about.com[/email] free newsletter: [url]http://delphi.about.com/library/blnewsletter.htm[/url] forum: [url]http://forums.about.com/ab-delphi/start/[/url] ******************************************** |
Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe
|
Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe
Hallo Mackhack,
danke für deine Hilfe, hatte die Idee leider aber auch schon. Mein Problenm ist dann diesen Link aktiv zu bekommen, also anklickbar usw. zu machen. Leider verstehe ich meinen Bespielsource nicht komplett um ihn so anzupassen wie ich ihn brauche. Mbg Steven |
Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe
Hallo Steven,
wenn du das scheme prefix "mailto:" nicht erfasst, dann kannst du die automatische URL-Erkennung nicht mehr verwenden. Der Aufruf von InitRichEditURLDetection() muss dann unterbleiben und du musst einen eigenen Parser einsetzen, der beim Laden des Textes und bei jeder Änderung die Mail-Adressen lokalisiert und per Message WM_SETCHARFORMAT den Zeichen-Effekt CFE_LINK (CHARFORMAT2) setzt - genau das macht die Auto URL Detection auch, nur dass der dortige Parser wegen des vorhandenen Schlüsselwortes viel einfacher (performanter) zu implementieren ist. Grüße vom marabu |
Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe
nur so ein kleiner einwurf von mir:
unter der folgenden url findest du einen richvieweditor der das verlinken von emails und urls von haus aus mitbringt: ![]() schau dir doch den mal in ruhe an?! |
Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe
Zitat:
Grüße Steven |
Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe
Zitat:
danke, guck mir den auf jeden Fall an. Grüße Steven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz