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

时间:2017-09-12 13:14:14

标签: delphi devexpress vcl

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

我的情况:

我正在创建一个用户需要富文本编辑的程序(如Bold,Italic,Underlining,Font Size,Font family,Paragraph Aligning)。所以我推出了一个DBRichEdit,用于加载用户将进行更改的文本模型。 所以我需要将此模型文本带到TdxRichEditControl以应用更改并将其再次提交给DBRichEdit以将其保存在数据库中。

1 个答案:

答案 0 :(得分: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;