![]() |
Text (Emailadressen) in TEdit unterstreichen
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 :cry:. Hat jemand eine Idee? :idea: Gruß |
AW: Text (Emailadressen) in TEdit unterstreichen
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> |
AW: Text (Emailadressen) in TEdit unterstreichen
Du könntest auch das TEdit selber zeichnen.
|
AW: Text (Emailadressen) in TEdit unterstreichen
Zitat:
|
AW: Text (Emailadressen) in TEdit unterstreichen
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. |
AW: Text (Emailadressen) in TEdit unterstreichen
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz