views:

123

answers:

3

Is there a way to get the RTF data from a richedit without using savetostream as in

strStream := TStringStream.Create('') ;
try
  RichEdit.Lines.SaveToStream(strStream);
  Text := strStream.DataString;
  strStream.CleanupInstance;
finally
  strStream.Free
+1  A: 

Tim the only way to get the RTF data from an RichEdit control is using a Stream because the windows message (EM_STREAMOUT) wich retrieve the RTF Data require a EditStreamCallback structure, this is the way used by windows to transfer rtf data into or out of a richedit control.

So you can use your own sample code, or implement the call to the windows message EM_STREAMOUT.

RRUZ
A: 

strStream := TStringStream.Create('');

try

RichEdit.Lines.SaveToStream(strStream);

Text := strStream.DataString;

finally

strStream.Free;

end;

// nice preview feature!

Anjou Gillespie
A: 

function RichTextToStr(red : TRichEdit) : string;

var ss : TStringStream;

begin ss := TStringStream.Create('');

try red.Lines.SaveToStream(ss); Result := ss.DataString; finally ss.Free; end; end;

procedure CopyRTF(redFrom,redTo : TRichEdit);

var s : TMemoryStream;

begin s := TMemoryStream.Create;

try redFrom.Lines.SaveToStream(s); s.Position := 0; redTo.Lines.LoadFromStream(s); finally s.Free; end; end;

I can attest deviation from the pattern results in frustration....