Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Объединить RTF


Автор: GrigoriyFomin 11.2.2011, 23:32
Подскажите ,есть ли красивый способ объединить текст в формате RTF  в один? Имеем 2 поля типа блоб с RTF, нужно их засунуть в один TRichEdit, сохранив оформление.

Автор: klyaksa 12.2.2011, 11:00
Через буфер обмена.

Автор: Snowy 12.2.2011, 13:12
Вот так можно склеить 2 ричедита:
Код
procedure MergeRichText(re1, re2: TRichEdit);
  function AddRtfCallback(dwCookie: Longint; pbBuff: PByte; cb: Longint;  var pcb: Longint): Longint; stdcall;
  var s: TStream;
  begin
    s := TStream(dwCookie);
    Result := 0;
    with s do
    begin
      if (Size = Position) then
      begin
        pcb := 0;
        Exit;
      end
      else if (Size - Position) <= cb then
      begin
        pcb := Size;
        Read(pbBuff^, Size);
      end
      else begin
        pcb := cb;
        Read(pbBuff^, cb);
      end;
    end;
  end;
var
  ms: TMemoryStream;
  EditStream: TEditStream;
begin
  re1.SelStart := MAXINT;
  ms := TMemoryStream.Create;
  re2.Lines.SaveToStream(ms);
  ms.Position := 0;
  try
    EditStream.dwCookie := Longint(ms);
    EditStream.dwError := 0;
    EditStream.pfnCallback := @AddRtfCallback;
    SendMessage(re1.Handle, EM_STREAMIN, SF_RTF or SFF_SELECTION, Longint(@EditStream));
  finally
    ms.Free;
  end;
end;
2 параметра - ричедит в который текст добавить, второй - ричедит из которого текст добавить.
P.S. uses RichEdit;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)