如何使用TdxRichEditControl以编程方式添加和获取富文本?

问题描述 投票:-2回答:1

DevExpress不提供有关“如何使用TdxRichEditControl以编程方式添加和获取富文本”的文档。或者对我的程序中的嵌入式全文编辑器有任何建议吗?我在德尔福西雅图。

我的情况:

我正在创建一个程序,用户需要在其上进行富文本编辑(如粗体,斜体,下划线,字体大小,字体系列,段落对齐)。所以我推出了一个加载用户将进行更改的文本模型的DBRichEdit。因此,我需要将此模型文本应用于TdxRichEditControl以应用更改并将其再次返回到DBRichEdit以将其保存在数据库中。

delphi devexpress vcl
1个回答
1
投票

如果你只想将部分文本插入到控件中,这是我用来从一个DevExpress RichEdit复制到另一个源代码的一些代码。你可能可以调整它以从另一个源复制(警告 - 这是几年旧):

procedure AppendToRichEdit(const Source, Dest: TcxRichEdit) ;
var
  RTFStream: TEditStream;
  Stream : TMemoryStream;

  function EditStreamReader(dwCookie: DWORD; pBuff: Pointer; cb: LongInt; pcb: PLongInt): DWORD; stdcall;
  begin
    Result := $0000;
    try
      pcb^ := TStream(dwCookie).Read(pBuff^, cb);
    except
      Result := $FFFF;
    end;
  end;

begin
  Stream := TMemoryStream.Create;
  try
    Source.Lines.SaveToStream(Stream) ;
    Stream.Position := 0;
    RTFStream.dwCookie := DWORD(Stream) ;
    RTFStream.dwError := $0000;
    RTFStream.pfnCallback := @EditStreamReader;
    Dest.InnerControl.Perform(EM_STREAMIN, SFF_SELECTION or SF_RTF or SFF_PLAINRTF, LPARAM(@RTFStream)) ;
    if RTFStream.dwError <> $0000 then
      raise Exception.Create('Error appending RTF data.') ;
  finally
    Stream.Free;
  end;
end;
© www.soinside.com 2019 - 2024. All rights reserved.