Einzelnen Beitrag anzeigen

taaktaak

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

Re: RTF Linespacing speichern und wiederherstellen

  Alt 26. Okt 2008, 13:31
Moin, Moin.

Habe mir das jetzt mal im Detail angesehen und muss gestehen, dass ich es auch mit dem "normalen" RichEdit nicht hinbekomme. Egal ob direktes Speichern oder indirekt über den Umweg mit einem MemoryStream. Nach dem Laden ist die Formatierung verschwunden. Ob die Formatierung überhaupt gespeichert wird, habe ich nicht untersucht.

Wenn ich nun in #3 geschrieben habe, dass es bei mir ohne Probleme funktioniert, dann stützt sich diese Bemerkung darauf, dass in einem meiner Programme die Zeilenabstände verändert werden können und diese Formatierung auch nach dem Wiedereinlesen wieder angezeigt wird. Wieso?

Nach kurzer Suche hier die Lösung: Ich verwende LineSpacingRule=4 und stelle das LineSpacing in Twips ein, nutze also nicht die Auswahl 1 / 1,5 / 2-zeilig. Ist zwar ein wenig umständlicher, erfüllt aber seinen Zweck.

Delphi-Quellcode:
procedure reSetLineSpacing(re:TRichEdit;LineSpacing:LongInt);
var PF2 : TParaFormat2;
begin
  FillChar(PF2,SizeOf(PF2),0);

  with PF2 do begin
    cbSize :=SizeOf(PF2);
    dwMask :=PFM_LineSpacing;
    bLineSpacingRule:=4;
    dyLineSpacing :=LineSpacing; // in twips > 567 twips = 1 cm
    end;

  SendMessage(re.Handle,EM_SetParaFormat,0,LParam(@PF2));
end;
Das erklärt nun zwar nicht, wieso es mit LineSpacingRule 1..3 nicht funktioniert, gibt aber eine funktionierende Alternative mit der man arbeiten kann.
Ralph
  Mit Zitat antworten Zitat