J'utilise le code actuel pour mettre en évidence les URL sur un TRichEdit:TRichEdit et URL mettant en lumière les problèmes
procedure TForm1.WndProc(var Message: TMessage);
var
p: TENLink;
strURL: string;
begin
if (Message.Msg = WM_NOTIFY) then
begin
if (PNMHDR(Message.lParam).code = EN_LINK) then
begin
p := TENLink(Pointer(TWMNotify(Message).NMHdr)^);
if (p.Msg = WM_LBUTTONDOWN) then
begin
SendMessage(RichEdit1.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg)));
strURL := RichEdit1.SelText;
ShellExecute(Handle, 'open', PChar(strURL), 0, 0, SW_SHOWNORMAL);
end
end;
end;
inherited;
end;
procedure TForm1.InitRichEditURLDetection;
var
mask: Word;
begin
mask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0);
SendMessage(RichEdit1.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
SendMessage(RichEdit1.Handle, EM_AUTOURLDETECT, Integer(True), 0);
form1.RichEdit1.OnChange := form1.RichEdit1Change;
end;
Il met en évidence les URL, mais il me empêchent RichEdit1.OnChange d'être appelé. J'essaie de nouveau à partir de WndProc et d'autres approches, mais rien ne fonctionne. La minute j'active le surligneur d'URL (en appelant InitRichEditURLDetection sur FormCreate) OnChange cesse de fonctionner.
Ceci est sur Delphi 7.
Des suggestions? merci!
merci, je l'ai essayé. Je reçois une exception eRangeError sur cette ligne lorsque j'essaie de l'exécuter – Jessica
@Jessica: Etes-vous sûr? (Peut-être une question stupide, mais ça devrait vraiment fonctionner.) –
oui: lecture de l'adresse 0000000 – Jessica