























uses Winapi.RichEdit, ShellAPI;
public procedure WndProc(var Msg: TMessage); override;
procedure TMainForm.FormCreate(Sender: TObject); var mask: Word; begin mask := SendMessage(editor.Handle, EM_GETEVENTMASK, 0, 0); SendMessage(editor.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); SendMessage(editor.Handle, EM_AUTOURLDETECT, Integer(True), 0); end;
procedure TMainForm.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(Self.ActiveControl); SendMessage(CE.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg))); sURL := CE.SelText; ShellExecute(0, 'open', PChar(sURL), 0, 0, SW_SHOWNORMAL); except end; end; end; end; inherited; end;

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。