Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#1

TRichEdit - CFM_Link : nach SaveToFile ist alles futsch

  Alt 30. Okt 2007, 22:39
Moin, Moin Zusammen!

Ich beschäftige mich seit einigen Tagen mit dem RichEditControl. Nachdem ich mich nun im MSN Informationsdickicht etwas besser zurechtfinde habe ich gute Informationen über CharFormat2 und ParaFormat2 gefunden. Damit lassen sich ja grundlegende Formatierungen durchführen, die Delphi so nicht zur Verfügung stellt. Leider hat die Link-Formatierung mir nun einige graue Haare mehr wachsen lassen:

Delphi-Quellcode:
procedure reSetLink(re:TRichEdit;Start,Length:Integer;SwitchOn:Boolean);
var CF2 : TCharFormat2;
    OldRange,
    NewRange : TCharRange;
begin
  FillChar(CF2,SizeOf(CF2),0);
  CF2.cbSize:=SizeOf(CF2);
  CF2.dwMask:=CFM_Link;
  if SwitchOn then CF2.dwEffects:=CFE_Link;

  NewRange.cpMin:=Start;
  NewRange.cpMax:=Start+Length;

  SendMessage(re.Handle,EM_ExGetSel,0,LParam(@OldRange));
  SendMessage(re.Handle,EM_ExSetSel,0,LParam(@NewRange));
  SendMessage(re.Handle,EM_SetCharFormat,SCF_Selection,LParam(@CF2));
  SendMessage(re.Handle,EM_ExSetSel,0,LParam(@OldRange));
end;
Obige Prozedur funktioniert prima - solange man den Text nicht in eine Datei speichert und anschließend wieder in den Speicher lädt: Dann ist der Link verschwunden! Habe einen kurzen Text mit 'nem Hex-Editor untersucht. Nun ist auch klar warum: Während für andere Formatierungen entsprechende Befehle (gibt's da einen Fachausdruck?) in der RTF-Datei stehen, unterbleibt dies beim "Link-Format".

Bevor ich nun eine Glatze bekomme , meine Frage: Ist dies so von Microsoft gewollt oder ist Delphi mit dem SaveToFile-Befehl daran schuld? Wenn das alles so sein soll - hat einer 'ne Idee, wie ich das Link-Format für den Anwender "unsichtbar" in eine Datei speichern kann. "Normale" Formatierungen wie FontColor, Unterstreichen o.ä. müssen ja für den Anwender verfügbar bleiben und dürfen nicht für die exklusive Link-Nutzung missbraucht werden.

Gruß Ralph
Ralph
  Mit Zitat antworten Zitat