从Delphi中的richedit获取richtext

时间:2010-09-03 14:27:16

标签: delphi delphi-2007 richedit

有没有办法从richedit获取RTF数据而不使用savetostream,如

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

2 个答案:

答案 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;

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