AGB  ·  Datenschutz  ·  Impressum  







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

Richedit: Alte Hyperlinks verschwinden

Ein Thema von Neutral General · begonnen am 6. Sep 2008 · letzter Beitrag vom 8. Sep 2008
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Richedit: Alte Hyperlinks verschwinden

  Alt 6. Sep 2008, 18:41
Hi,

Habe nen Class-Helper für TRichedit geschrieben mit einer Methode:

Delphi-Quellcode:
procedure TRicheditLink.SelectionToLink;
var CF: TCharFormat;
begin
  FillChar(CF2,SizeOf(CF2),0);
  CF.cbSize:=SizeOf(CF2);
  CF.dwMask:= CFM_LINK;
  CF.dwEffects := CFE_LINK;
  
  SendMessage(Handle,EM_SETCHARFORMAT,SCF_SELECTION,LParam(@CF));
end;
Soweit, sogut. Allerdings verschwindet Link x-1 beim erstellen von Link x.

Beispiel ('Test' soll "gelinkt" werden)

Delphi-Quellcode:
Add('Test');
// SelectionToLink (mit dem zuletzt hinzugefügten)
Ergebnis
Test


Delphi-Quellcode:
Add('Test');
// SelectionToLink (mit dem zuletzt hinzugefügten)
Add('Test');
// SelectionToLink (mit dem zuletzt hinzugefügten)
Ergebnis

Test
Test


Gibts dazu ne Erklärung + Lösung?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Richedit: Alte Hyperlinks verschwinden

  Alt 7. Sep 2008, 10:56
Ich schau jetzt gerade nicht in die VCL-Sourcen, aber es könnte daher kommen, dass CFE_LINK nicht in RTF dargestellt werden kann, also ein temporäres Format ist. Funktioniert es vielleicht, wenn du die Zeilen mit
SendMessage(Handle, EM_REPLACESEL, 0?, PChar(Zeile + #13#10)); anstatt mit "Add" hinzufügst?
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Richedit: Alte Hyperlinks verschwinden

  Alt 7. Sep 2008, 12:22
Hi,

Ich füge eine Reihe bisher zu hinzu:

Delphi-Quellcode:
Lines.Add('');
SelStart := Length(Text);
SelText := NewLine;

// NewLine parsen und ggf. Links setzen.
Ist das nicht ungefähr das, was die Msg auch machen würde?

PS: Hab was neues rausgefunden o.O

Also bei mir sollen Stellen der Art #Zahl "gelinkt" werden.

Angenommen ich schreiben:

Zitat:
Test #23 #45 bla #67
=>

Zitat:
Test #23 #45 bla #67
Dann schreibe ich darunter:

Zitat:
Test
Ergebnis:

Zitat:
Test #23 #45 bla #67
Test
Mhhh. Und diese anderen beiden bleiben auch für immer erhalten. Es wird nur bei einer neuen Reihe der jeweils letzte Link gelöscht. egal ob in der neuen Reihe ein Link vorkommt oder nicht. Wenn man mehrere schreibt wird nur der letzte gelöscht, die anderen bleiben für immer.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Richedit: Alte Hyperlinks verschwinden

  Alt 8. Sep 2008, 17:57
Hilfe
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Richedit: Alte Hyperlinks verschwinden

  Alt 8. Sep 2008, 18:59
Fällt mir so auf Anhieb nix weiter ein. Hier noch ein paar Dinge, die du versuchen könntest:

Wird der Link auch entfernt, wenn danach noch Text kommt? Wenn nein, einfach ein Leerzeichen dranhängen.

"Length(Text)" ist übrigens ziemlich ineffizient, nimm statt dessen lieber GetTextLen.

Wie setzt du denn die Links? Genauer gesagt: wie findest du aus der Position im "NewLine" die Positionen für SelStart und SelLength im RichEdit raus?

Könntest du statt "Lines.Add('')" auch einfach ein sLineBreak vor "NewLine" hängen? Also
Delphi-Quellcode:
SelStart := GetTextLen;
SelText := #13#10 + NewLine;
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Richedit: Alte Hyperlinks verschwinden

  Alt 8. Sep 2008, 19:52
Zitat von Flocke:
Wird der Link auch entfernt, wenn danach noch Text kommt? Wenn nein, einfach ein Leerzeichen dranhängen.
Wenn ich ein Leerzeichen dranhänge gehts jetzt. Ist zwar imo nicht die schönste Lösung aber besser als gar keine Lösung

Danke
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  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 22:48 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