4

有没有办法在不使用 savetostream 的情况下从 Richedit 获取 RTF 数据

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

2 回答 2

5

Tim 从 RichEdit 控件获取 RTF 数据的唯一方法是使用 Stream,因为EM_STREAMOUT检索 RTF 数据的 windows 消息 () 需要一个EditStreamCallback结构,这是 windows 用来将 rtf 数据传入或传出 Richedit 控件的方式.

所以你可以使用自己的示例代码,或者实现对 windows message 的调用EM_STREAMOUT

于 2010-09-03T19:13:21.813 回答
3
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;

我可以证明偏离模式会导致沮丧......

于 2010-09-30T21:56:18.177 回答