Получите richtext от richedit в Delphi - PullRequest
       20

Получите richtext от richedit в Delphi

4 голосов
/ 03 сентября 2010

Есть ли способ получить данные RTF из рихедита без использования savetostream, как в

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

Ответы [ 2 ]

5 голосов
/ 03 сентября 2010

Тим, единственный способ получить данные RTF из элемента управления RichEdit - использовать Stream, потому что сообщение Windows (EM_STREAMOUT), для получения данных RTF требуется EditStreamCallback структура, это способ, используемый окнами для передачи данных RTF в или из Richedit управления.

Таким образом, вы можете использовать свой собственный пример кода или реализовать вызов сообщения Windows EM_STREAMOUT.

3 голосов
/ 01 октября 2010
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;

Я могу засвидетельствовать отклонение от схемы, которое приводит к разочарованию ....

...