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; 
  2. 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