was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1547)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (115)
IDE (21)
Indy (5)
Internet / LAN (131)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (127)
Strings (83)
System (268)
VCL (243)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

30 Visitors Online


 
...URLs im TRichEdit anzeigen?
Autor: Mike Shkolnik
Homepage: http://www.scalabium.com/
[ Tip ausdrucken ]  

Tip Bewertung (19):  
     




{
  So what we need:
  1. drop on your form a RichEdit component from win32 page of component
  palette
  2. in OnCreate event of your form write the next code:
}

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);
  RichEdit1.Text := 'SwissDelphiCenter.com: '#13#10 +
    ' Site is located at www.SwissDelphiCenter.com';
end;

{
  After that your Richedit will convert automatically any URLs in highlighted
  (blue color and underlined). Even if you'll start to enter any text directly
  in Richedit, any begings for URL will be converted too (not only existing
  text string but new too)
}

// 3. now we must detect mouse clicks in URL range. For this task we must
//    override WndProc method of our form:
type
  
TForm1 = class(TForm)
  protected
    procedure 
WndProc(var Message: TMessage); override;
  end;

// 4. the implementation looks like this:

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;

{
 5. Now you can compile your project (don't forget to include Richedit and
 ShellAPI units in uses clause).
}

 

Bewerten Sie diesen Tipp:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners