AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Text (Emailadressen) in TEdit unterstreichen

Ein Thema von TheProfi · begonnen am 27. Jul 2010 · letzter Beitrag vom 28. Jul 2010
Antwort Antwort
Benutzerbild von TheProfi
TheProfi

Registriert seit: 30. Mai 2005
Ort: Emden
42 Beiträge
 
Delphi 10.3 Rio
 
#1

Text (Emailadressen) in TEdit unterstreichen

  Alt 27. Jul 2010, 16:25
Moin zusammen,

ich bin dabei ein Programm zu schreiben in dem man Aufgaben via Email zeitgesteuert verschicken kann. Nun möchte ich gerne wie bei Outlook die Emailadressen auswählen und in das Tedit schreiben. Dies geht alles. Allerdings möchte ich gerne, dass die Emailadressen im TEdit unterstrichen sind und man sie mit einem Mausklick auswählen kann, wenn man löscht soll die Email vollständig gelöscht werden etc.

Bsp. wie es im TEdit erscheinen soll: willi@test.de ; herbert@test.de ; nadine@test.de

und hier scheiter ich . Hat jemand eine Idee?

Gruß
Georg Reimann
------------------------------------------------------
Sicher ist nur eines, dass nichts sicher ist...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.064 Beiträge
 
Delphi 12 Athens
 
#2

AW: Text (Emailadressen) in TEdit unterstreichen

  Alt 27. Jul 2010, 16:37
Verwende statt des Edit ein TRichEdit (oder Verwandte), dort kannst du sowas machen.

Falls es nicht unbedingt ein Edit sein muß, dann annst du auch das TLinkLabel von Delphi 2010 verwenden, dieses kennt den HTML-Link-Code <a>
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Text (Emailadressen) in TEdit unterstreichen

  Alt 27. Jul 2010, 21:12
Du könntest auch das TEdit selber zeichnen.
Marvin
  Mit Zitat antworten Zitat
Benutzerbild von TheProfi
TheProfi

Registriert seit: 30. Mai 2005
Ort: Emden
42 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Text (Emailadressen) in TEdit unterstreichen

  Alt 28. Jul 2010, 08:40
Du könntest auch das TEdit selber zeichnen.
Wie meinst du das?
Georg Reimann
------------------------------------------------------
Sicher ist nur eines, dass nichts sicher ist...
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Text (Emailadressen) in TEdit unterstreichen

  Alt 28. Jul 2010, 10:49
Ich war mir sicher, dass die VCL sowas wie ein OwnerDraw-Event anböte.
Jetzt habe ich in Lazarus nachgesehen (hab nunmal grad kein Delphi) und gesehen, dass zumindest die LCL keines hat.
D.h., dass du da mit Win32API-Subclassing-Konstrukten ran müsstest.
(dazu gibt's hier von Luckie auch ein gutes Tutorial )

Demnach wäre himitsu's Lösung deutlich schneller und einfacher anzuwenden.
Marvin
  Mit Zitat antworten Zitat
Benutzerbild von TheProfi
TheProfi

Registriert seit: 30. Mai 2005
Ort: Emden
42 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Text (Emailadressen) in TEdit unterstreichen

  Alt 28. Jul 2010, 16:06
Erstmal danke für Eure Antworten.
Hab mich nun doch für eine andere Lösung entschieden. Noch nicht ganz ausgereift aber...

Ich nehme ein EDIT von TADVEdit aus den TMS-Komponenten (bin Kunde).

Beispieltext für das Edit: '12345; 67890; 123456; 98765'

Delphi-Quellcode:
function PosExReverse(substr, str: string; Indexpos : integer): integer;
var x : integer;
begin
  x := length(str)-Indexpos+1; //Positionen im String müssen auch reverse sein
  x := posex(substr,AnsiReverseString(str),x);
  if x = 0 then x := length(str)+1;
  result := length(str)-x+1; //Position zurückdrehen und Ergebnis zurückliefern
end;

procedure TForm5.Edit1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var mp : Tpoint;
    mpxe, //Ende des markierten Textes
    mpxb, //Beginn des markierten Textes
    mpxs : integer; //ermittelte Indexposition aus dem Mausklick
begin
  mp.X := x; //Mauskoordinate X in Point
  mp.Y := y; //Mauskoordinate Y in Point
  mpxs := Edit1.CharFromPos(mp); //aktuelle Indexposition aus dem Edit holen
  //so nun müssen wir den anfang finden
  mpxb := PosExReverse(';',edit1.Text,mpxs); //Beginn ermitteln

  //und nun das ende finden
  mpxe := posex(';',edit1.Text,mpxs);

  //und nun den Text zwischen den Semikolons markieren
  edit1.SelStart := mpxb;
  edit1.SelLength := mpxe-mpxb-1;
  label1.Caption := trim(edit1.SelText); //das Ergebnis extra anzeigen bzw. weiterverwenden
end;
Georg Reimann
------------------------------------------------------
Sicher ist nur eines, dass nichts sicher ist...

Geändert von TheProfi (28. Jul 2010 um 16:30 Uhr) Grund: Code überarbeitet
  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 15: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