Egy RichEdit komponenst a SendMessage függvény segítségével felkészíthetünk arra, hogy az URL címeket linkként jelenítse meg, úgy, mint azt a Microsoft Word teszi.
Először lekérdezzük a Form aktuális eseménymaszkját.
Mask:=SendMessage(Handle,EM_GETEVENTMASK,0,0);
A lekérdezett eseménymaszkot bővítjük a RichEdit1 objektum ENM_LINK eseménnyel.
SendMessage(RichEdit1.Handle,EM_SETEVENTMASK,0,mask or ENM_LINK);
A RichEdit komponens képes arra, hogy a Word programhoz hasonlóan, automatikusan felismerje az URL címeket, ehhez az EM_AUTOURLDETECT üzenetet kell küldenünk neki.
SendMessage(RichEdit1.Handle,EM_AUTOURLDETECT,Integer(True),0);
Ha felülírjuk a Form WndProc eljárását, belepiszkálhatunk annak eseménykezelőjébe.
procedure WndProc(var Message: TMessage); override;
A Message paraméter tartalmazza a Form számára küldött üzenetet. Ha a paraméter egy linkre kattintás eseményét tartalmazza, akkor a ShellExecute függvény segítségével megnyitjuk az adott URL-t. A megnyitáshoz a számítógép automatikusan elindítja a böngésző programot.
if (Message.Msg=WM_NOTIFY) then begin
if (PNMHDR(Message.lParam).code=EN_LINK) then begin
Az EN_LINK eseményről a TENLink struktúra segítségével kérhetünk le információkat.
Az URL megnyitását akkor kell végrehajtanunk, ha a felhasználó az egér bal oldali gombját nyomta le. Ezt a TENLink struktúra Msg tagja segítségével ellenőrizhetjük le.
if (p.Msg=WM_LBUTTONDOWN) then begin
Kijelöljük a linket.
SendMessage(RichEdit1.Handle,EM_EXSETSEL,0,Longint(@(p.chrg)));
URL:=RichEdit1.SelText
Majd megnyitjuk.
ShellExecute(Handle,'open',PChar(URL),0,0,SW_SHOWNORMAL);