有没有办法从richedit获取RTF数据而不使用savetostream,如
strStream := TStringStream.Create('') ;
try
RichEdit.Lines.SaveToStream(strStream);
Text := strStream.DataString;
strStream.CleanupInstance;
finally
strStream.Free
答案 0 :(得分:5)
Tim从RichEdit控件获取RTF数据的唯一方法是使用Stream,因为检索RTF数据的Windows消息(EM_STREAMOUT
)需要EditStreamCallback
结构,这是使用的方式通过Windows将rtf数据传入或传出richedit控件。
因此,您可以使用自己的示例代码,或实现对Windows消息EM_STREAMOUT
的调用。
答案 1 :(得分: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;
我可以证明偏离模式导致沮丧......