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