Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi RTF Texte teilen aber Formatierung behalten (https://www.delphipraxis.net/20432-rtf-texte-teilen-aber-formatierung-behalten.html)

mandumoal 17. Apr 2004 20:47


RTF Texte teilen aber Formatierung behalten
 
Hallo!

Ich teile ein ganz großes RTF indem ich nach Trennern suche und dann den Text zwischen zwei Trennern in ein eigenes RTF speichere. Das geht auch ganz wunderbar, aber das Problem ist, das die Formatierungen ja im Dateikopf stehen und nicht übernommen werden wenn ich einen Teil des Dokuments irgendwo rausschneide und einzeln abspeichere.
Hat jemand eine Idee wie ich das lösen könnte damit die Formatierungen übernommen werden?
Ich könnte zwar in jeder Datei den Kopf der ursprünglichen Datei einfügen, aber dann hätte ich jede Menge Formatierungen drinne die gar nicht gebraucht werden.

mfg mandumoal

toms 17. Apr 2004 21:18

Re: RTF Texte teilen aber Formatierung behalten
 
Hi,

Das geht wahrscheinlich nur mit MSDN-Library durchsuchenEM_STREAMOUT .
Das sieht dann etwa so aus:

Delphi-Quellcode:
uses
  RichEdit;

type
  TEditStreamCallBack = function(dwCookie: Longint; pbBuff: PByte;
    cb: Longint; var pcb: Longint): DWORD;
  stdcall;

  TEditStream = record
    dwCookie: Longint;
    dwError: Longint;
    pfnCallback: TEditStreamCallBack;
  end;


function EditStreamOutCallback(dwCookie: Longint; pbBuff: PByte; cb: Longint;
  var pcb: Longint): DWORD; stdcall;
var
  theStream: TStream;
begin
  theStream := TStream(dwCookie);
  with theStream do
  begin
    if cb > 0 then
      pcb := Write(pbBuff^, cb);
    Result := 0;
  end;
end;

procedure GetRTFSelection(aRichEdit: TCustomRichEdit; intoStream: TStream);
var
  editstream: TEditStream;
begin
  with editstream do
  begin
    dwCookie := Longint(intoStream);
    dwError := 0;
    pfnCallback := EditStreamOutCallBack;
  end;
  aRichedit.Perform(EM_STREAMOUT, SF_RTF or SFF_SELECTION,
    Longint(@editstream));
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  ms: TMemoryStream;
begin
  // 1. Text markieren
  RichEdit1.SelStart := 0; // von
  RichEdit1.SelLength := 200; // bis Zeichen ändern!
  ms := TMemoryStream.Create;
  try
    // 2. Rtf Formatierung der Markierung auslesen
    GetRTFSelection(RichEdit1, ms);
    // 3. Speichern
    ms.SaveToFile('c:\test.rtf');
  finally
    ms.Free;
  end;
end;

mandumoal 17. Apr 2004 22:41

Re: RTF Texte teilen aber Formatierung behalten
 
Danke, so werd ich es mal probieren!

maxbecker 18. Apr 2005 17:55

Re: RTF Texte teilen aber Formatierung behalten
 
Hallo alle!

Leider wirft mir D4Pro zum Thema EM_STREAMOUT einen "undeclared identifier" an den Kopf und sagt das auch
zum SF_TEXT... mach ich was falsch oder <noob>muss ich jetzt upgraden?</noob>

Delphi-Quellcode:
SendMessage(wnd, EM_STREAMOUT, SF_TEXT, lParam(@editstream[1]));
Danke schonmal im Voraus!

Max

toms 18. Apr 2005 18:01

Re: RTF Texte teilen aber Formatierung behalten
 
Hallo!

Die Unit RichEdit hast du eingebunden?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:15 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