Tekst » RichEdit

Jaka jest procedura do podświetlania URL

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; 


3. 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 komentarze

Red666 2006-02-17 20:34

A jak wstawić grafikę do pola RichEdit??

CooBek 2004-05-16 13:59

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

netvalker 2004-05-16 11:31

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

Drajwer 2004-05-15 15:13

lajcik :-)  przyda sie