AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi EMail-Adressen und URL's in Memo oder Richedit hervorheben
Thema durchsuchen
Ansicht
Themen-Optionen

EMail-Adressen und URL's in Memo oder Richedit hervorheben

Ein Thema von Steven2 · begonnen am 30. Mai 2007 · letzter Beitrag vom 1. Jun 2007
 
Steven2

Registriert seit: 17. Nov 2006
94 Beiträge
 
Delphi 11 Alexandria
 
#1

EMail-Adressen und URL's in Memo oder Richedit hervorheben

  Alt 30. Mai 2007, 23:26
Hallo...
ich möchte in einem Memo oder Richedit Text eingeben.
Wenn Emailadressen oder URL's eingegeben werden, so müssen diese "automatisch" verlinkt werden.
Mit dem Code klappt das schon ganz gut, nur will ich nicht immer ein mailto: vor die Mailadresse eingeben, damit diese als solche erkannt wird.

Gruß
Steven



Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    RichEdit2: TRichEdit;
    procedure FormCreate(Sender: TObject);
  private
    procedure InitRichEditURLDetection(RE : TRichEdit);
  public
    { Public declarations }
  protected
    procedure WndProc(var Msg: TMessage); override;
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}

uses ShellApi, RichEdit;

procedure TForm1.InitRichEditURLDetection(RE: TRichEdit);
var
  mask: Word;
begin
  mask := SendMessage(RE.Handle, EM_GETEVENTMASK, 0, 0);
  SendMessage(RE.Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK);
  SendMessage(RE.Handle, EM_AUTOURLDETECT, Integer(True), 0);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  s: string;
begin
  InitRichEditURLDetection(RichEdit1);

  s:='Great Delphi tutorials and articles at ' +
     'http://www.delphi.about.com.' + #13#10 +
     'About Delphi Programming site!' + #13#10 +
     'Send an email to your Guide: mailto:delphi.guide@about.com';
  RichEdit1.Text := s;

  s:= 'http://www.delphi.about.com. ' +
      ' This Rich Edit does not recognize URLs!';
  RichEdit2.Text := s
end;

procedure TForm1.WndProc(var Msg: TMessage);
var
  p: TENLink;
  sURL: string;
  CE : TRichEdit;
begin
 if (Msg.Msg = WM_NOTIFY) then
 begin
  if (PNMHDR(Msg.lParam).code = EN_LINK) then
  begin
   p := TENLink(Pointer(TWMNotify(Msg).NMHdr)^);
   if (p.Msg = WM_LBUTTONDOWN) then
   begin
    try
     CE := TRichEdit(Form1.ActiveControl);
     SendMessage(CE.Handle, EM_EXSETSEL, 0, Longint(@(p.chrg)));
     sURL := CE.SelText;
     ShellExecute(Handle, 'open', PChar(sURL), 0, 0, SW_SHOWNORMAL);
    except
    end;
   end;
  end;
 end;

 inherited;
end; (* TForm1.WndProc *)

end. (* unit1.pas *)


{
********************************************
Zarko Gajic
About.com Guide to Delphi Programming
[url]http://delphi.about.com[/url]
email: [email]delphi.guide@about.com[/email]
free newsletter: [url]http://delphi.about.com/library/blnewsletter.htm[/url]
forum: [url]http://forums.about.com/ab-delphi/start/[/url]
********************************************
}
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz