سؤال

هل هناك طريقة للحصول على بيانات RTF من Richedit دون استخدام SavetoStream كما في

strStream := TStringStream.Create('') ;
try
  RichEdit.Lines.SaveToStream(strStream);
  Text := strStream.DataString;
  strStream.CleanupInstance;
finally
  strStream.Free
هل كانت مفيدة؟

المحلول

تيم الطريقة الوحيدة للحصول على بيانات RTF من عنصر تحكم RichEdit هي استخدام دفق لأن رسالة Windows (EM_STREAMOUT) استرداد بيانات RTF تتطلب أ EditStreamCallback الهيكل ، هذه هي الطريقة التي تستخدمها Windows لنقل بيانات RTF إلى أو خارج عن عنصر تحكم غني.

حتى تتمكن من استخدام رمز العينة الخاص بك ، أو تنفيذ المكالمة على رسالة Windows EM_STREAMOUT.

نصائح أخرى

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;

يمكنني أن أشهد الانحراف عن النمط يؤدي إلى الإحباط ....

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top