Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何使用TdxRichEditControl以编程方式添加和获取富文本?_Delphi_Devexpress_Vcl - Fatal编程技术网

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

Delphi 如何使用TdxRichEditControl以编程方式添加和获取富文本?,delphi,devexpress,vcl,Delphi,Devexpress,Vcl,DevExpress不提供关于“如何使用TdxRichEditControl以编程方式添加和获取富文本”的文档。 或者对在我的程序中嵌入全文编辑器有什么建议?我在德尔福西雅图 我的处境: 我正在创建一个程序,用户需要对其进行富文本编辑(如粗体、斜体、下划线、字体大小、字体系列、段落对齐)。因此,我放置了一个DBRichEdit,加载一个文本模型,用户将对其进行更改。 因此,我需要将此模型文本带到TdxRichEditControl以应用更改,然后再次将其返回到DBRichEdit以将其保存到数据

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

我的处境:

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

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

过程附录编辑(const-Source,Dest:TcxRichEdit);
变量
RTFStream:TEditStream;
流:TMemoryStream;
函数EditStreamReader(dwCookie:DWORD;pBuff:Pointer;cb:LongInt;pcb:PLongInt):DWORD;stdcall;
开始
结果:=$0000;
尝试
pcb^:=TStream(dwCookie).Read(pBuff^,cb);
除了
结果:=$FFFF;
结束;
结束;
开始
Stream:=TMemoryStream.Create;
尝试
Source.Lines.SaveToStream(流);
流位置:=0;
RTFStream.dwCookie:=DWORD(流);
RTFStream.dwError:=$0000;
RTFStream.pfnCallback:=@EditStreamReader;
Dest.InnerControl.Perform(EM_STREAMIN、SFF_SELECTION或SF_RTF或SFF_prinrtf、LPARAM(@RTFStream));
如果RTFStream.dwError$0000,则
引发异常。创建('附加RTF数据时出错');
最后
免费;
结束;
结束;

这里的推荐问题与主题无关。在任何情况下,为什么期望一个好的推荐而不指定需求呢?这可能会帮助您使用dev-express控件。我很难相信它没有文档。谢谢你回复我已经看到的链接,他们没有提供settext和gettext方法。你还没有做足够的研究。这个问题是离题的。检查是否有初学者。关于这个主题还有其他几个问题。谢谢,Dave,我已经通过切换到支持从TdxRichEditControl插入和获取文本的较新版本的DevExpress解决了这个问题。TdxRichEditControl.Document.insertftext();TdxRichEditControl.Document.GetRTFtext();
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;