【发布时间】:2015-02-22 13:45:42
【问题描述】:
我有 RTF 格式的文档模板,它包含一些文本和一些图像(使用写字板,Win 7 创建)。我需要更改一些文本并保存它。我正在尝试这样做(Delphi XE7,Win32 平台,Windows 7 x64 SP1):
RichEdit1.Lines.LoadFromFile('1.rtf');
RichEdit1.Lines.SaveToFile('2.rtf');
所以我还没有更改任何内容,但是 2.rtf 不再包含任何图像,并且尺寸比 1.rtf 小得多。其他一切(表格/文本/字体/...)似乎都还可以。任何想法如何保存所有图像(和其他对象)?
更新1。刚刚找到解决方法。我有 DevExpress 组件,如果我使用 TcxRichEdit 而不是 TRichEdit,那么我可以保留所有对象:
cxRichEdit1.Properties.AllowObjects := True;
cxRichEdit1.Lines.LoadFromFile('e:\Work\InvoiceGenerator\bin\Invoice2.rtf');
cxRichEdit1.Lines.SaveToFile('e:\Work\InvoiceGenerator\bin\Invoice3.rtf');
但我在 TRichEdit 中找不到类似的功能。
【问题讨论】:
-
基本 Delphi
TRichEdit控件不支持图像和其他 OLE 对象 -
@Dalija:我不需要对象的“支持”(顺便说一句,图像不存储为 OLE 对象),我只需要“按原样”保存所有对象而不做任何更改。组件不必理解(所有)对象,但我相信它也不应该删除它们。
-
TRichEdit没有此功能,因为在设计时它从未打算封装RTF文件。 Rich Edit 旨在在用户可以修改的编辑控件中显示富文本 - 加载/保存RTF文件只是该控件的额外奖励。TRichEdit不支持许多其他RTF事物。解决方案是不要考虑使用TRichEdit,因为我看到您已经使用第三方库找到了您的解决方案。 -
另一方面,看到这是“模板”的“发票生成器”,您为什么不使用 Delphi 中的一个庞大的报告引擎?
-
@Jeryy 客户希望能够编辑模板,最重要的是 - 在常规文字处理器 (Word/WordPad) 中,因此它应该是替换 RTF 文件的某些部分的最简单方法.
标签: delphi rtf delphi-xe7 trichedit