Jaka jest procedura do podświetlania URL

CooBek

Wiele razy to już było poruszane, więc postanowiłem to tu wrzucić:

Do sekcji uses dodajemy 2 nowe moduły: RichEdit oraz ShellAPI.

  1. Deklarujemy w sekcji protected procedurke WndProc:
type 
  TForm1 = class(TForm) 
  protected 
    procedure WndProc(var Message: TMessage); override; 
  end; 

2.W OnCreate formy wrzucamy taki oto kod:

procedure TForm1.FormCreate(Sender: TObject); 
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); 
end; 
  1. No i oczywiście na koniec piszemy procedurę WndProc:
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;

4 komentarzy

A jak wstawić grafikę do pola RichEdit??

no cóż, innego sposobu nie znam...

Nie zawsze działa to poprawnie :(
Czasem podświetla nie to co ma.

lajcik :-) przyda sie