![]() |
Richedit alle einträge nacheinander durchgehen!
Hallo, habe mal wieder ein kleines Problem ich habe eine Download funktion und möchte nun dafür jedesmal einen link nehmen der in einem richedit steht. wie kann ich alle links nacheinander durchgehen?
und gleichzeitig noch testen ob der string mit ![]() Danke |
Re: Richedit alle einträge nacheinander durchgehen!
Zitat:
Zitat:
|
Re: Richedit alle einträge nacheinander durchgehen!
Hallo,
wenn die Links in deinem RichEdit den einzelnen Zeilen entsprechen, dann solltest du vielleicht lieber eine ListBox verwenden. Mit dem Style lbOwnerDrawFixed kannst du auch dort Farbe ins Spiel bringen. Hier ein Beispiel mit dem von dir gewünschten Präfix-Test:
Delphi-Quellcode:
Getippt und nicht getestet.
const
SITE = 'http://test.de'; procedure TDemoForm.ListBoxDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin with Control as TListbox do begin Canvas.FillRect(Rect); s := Copy(Items[Index], Length(Items[Index]) - 7, 8); if SameText(Copy(Items[i], 1, Length(SITE)), SITE) then Canvas.Brush.Color := clGreen else Canvas.Brush.Color := clRed; Canvas.TextOut(Rect.Left, Rect.Top, Items[Index]); end; end; Gute Nacht marabu |
Re: Richedit alle einträge nacheinander durchgehen!
Moin mkinzler,
Zitat:
|
Re: Richedit alle einträge nacheinander durchgehen!
Danke für eure Hilfe ich werde gleich mal guckne ob ich das hinbekomm
|
DP-Maintenance
Dieses Thema wurde von "Phoenix" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
Das geht eher um die Controls |
Re: Richedit alle einträge nacheinander durchgehen!
hm, was ist denn daraus geworden. Hast du es hinbekommen? Würde mich nämlich auch interessieren
|
Re: Richedit alle einträge nacheinander durchgehen!
Hallo Thomas,
das klingt ja so, als würde es bei dir nicht funktionieren. Magst du dein Problem schildern? Grüße vom marabu |
Re: Richedit alle einträge nacheinander durchgehen!
Naja, das Beispiel oben geht ja nur zeilenweise durch das RichtEdit und nimmt jede Zeile als einen Link. Ich habe aber einen Fließtext, in dem vereinzelt Links zu finden sind (siehe Thread zu TParamList). Ich hatte das so verstanden, dass la.reunion darauf abzielte. Kennt denn jemand eine Möglichkeit, die Links in einem RichtEdit zu erkenne bzw. zu iterieren?
Danke und Grüße Thomas |
Re: Richedit alle einträge nacheinander durchgehen!
Hallo Thomas,
die zuverlässige Erkennung von URLs (http oder mailto) in einem Fließtext benötigt ein Erkennungszeichen. Wird der Protokollvorsatz verwendet, dann erkennt das RichEdit-Control solche URLs selbst. Fehlen diese Vorsätze, dann brauchst du einen Ersatz (z.B. das Zeichen @ in einer E-Mail-Adresse). Die restliche Arbeit dürfte so aussehen: Zurücksetzen der Formatierung, Feststellen des sichtbaren Bereichs und Suchen und Formatieren in diesem Textausschnitt. Oder du suchst nach einer Komponente, die das alles schon kann. Freundliche Grüße |
Re: Richedit alle einträge nacheinander durchgehen!
Ich kenne mich mit der RichText-Syntax nicht aus, aber könnte man dort nicht nach einem Link suchen und dann die Position im formatierten Text errechnen?
|
Re: Richedit alle einträge nacheinander durchgehen!
Hallo,
selbstverständlich kannst du den Text im RichEdit-Control untersuchen. Du musst keinen Parser für RTF schreiben, das Control ermöglicht dir ja den Zugriff auf den PlainText. Sobald du ein Konzept zur Erkennung der URLs hast ist die Implementierung dieser Funktionalität nach dem von mir beschriebenen Verfahren eine reine Fleißarbeit. Vielleicht hast du ja sogar schon angefangen. Wenn du auf Probleme stößt, weißt du ja wo dir geholfen wird. Freundliche Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:24 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