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
Antwort Antwort
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
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#2

Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe

  Alt 31. Mai 2007, 04:47
Hi,

vielleicht hilft das weiter:

Validieren einer eMail Adresse
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Steven2

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

Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe

  Alt 31. Mai 2007, 07:38
Hallo Mackhack,
danke für deine Hilfe, hatte die Idee leider aber auch schon.
Mein Problenm ist dann diesen Link aktiv zu bekommen, also anklickbar usw. zu machen.
Leider verstehe ich meinen Bespielsource nicht komplett um ihn so anzupassen wie ich ihn brauche.
Mbg
Steven
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe

  Alt 31. Mai 2007, 09:19
Hallo Steven,

wenn du das scheme prefix "mailto:" nicht erfasst, dann kannst du die automatische URL-Erkennung nicht mehr verwenden. Der Aufruf von InitRichEditURLDetection() muss dann unterbleiben und du musst einen eigenen Parser einsetzen, der beim Laden des Textes und bei jeder Änderung die Mail-Adressen lokalisiert und per Message WM_SETCHARFORMAT den Zeichen-Effekt CFE_LINK (CHARFORMAT2) setzt - genau das macht die Auto URL Detection auch, nur dass der dortige Parser wegen des vorhandenen Schlüsselwortes viel einfacher (performanter) zu implementieren ist.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#5

Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe

  Alt 31. Mai 2007, 14:02
nur so ein kleiner einwurf von mir:
unter der folgenden url findest du einen richvieweditor der das verlinken von emails und urls von haus aus mitbringt: http://www.trichview.com/.

schau dir doch den mal in ruhe an?!
  Mit Zitat antworten Zitat
Steven2

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

Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe

  Alt 1. Jun 2007, 00:00
Zitat von marabu:
...du musst einen eigenen Parser einsetzen, der beim Laden des Textes und bei jeder Änderung die Mail-Adressen lokalisiert und per Message WM_SETCHARFORMAT den Zeichen-Effekt CFE_LINK (CHARFORMAT2) setzt - genau das macht die Auto URL Detection auch, nur dass der dortige Parser wegen des vorhandenen Schlüsselwortes viel einfacher (performanter) zu implementieren ist.

Grüße vom marabu
Einen eigenen Parser einsetzen klingt sehr kompliziert, hast du evt. ein Beipiel wie ich sowas angehen muss?

Grüße
Steven
  Mit Zitat antworten Zitat
Steven2

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

Re: EMail-Adressen und URL's in Memo oder Richedit hervorhe

  Alt 1. Jun 2007, 00:01
Zitat von computer-glossar.de:
nur so ein kleiner einwurf von mir:
unter der folgenden url findest du einen richvieweditor der das verlinken von emails und urls von haus aus mitbringt: http://www.trichview.com/.

schau dir doch den mal in ruhe an?!
Hallo Marcus,
danke, guck mir den auf jeden Fall an.
Grüße
Steven
  Mit Zitat antworten Zitat
Antwort Antwort


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 23:55 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