Delphi 使用MS Word的FormattedText属性而不是剪贴板将RTF文本传递给Word

Delphi 使用MS Word的FormattedText属性而不是剪贴板将RTF文本传递给Word,delphi,ms-word,delphi-2009,office-automation,Delphi,Ms Word,Delphi 2009,Office Automation,我想使用Word自动化(早期绑定)来拼写/语法检查TDBRichEdit组件的内容,同时在此过程中保留源代码的RTF格式。执行此操作的明显方法是按如下方式使用剪贴板: DBRichEdit.SelectAll DBRichEdit.Lines.CopyToClipboard WordDoc.Content.Paste 进行拼写/语法检查 WordDoc.Content.Copy DBRichEdit.PasteFromClipboard 它工作,但我认为这是糟糕的编程,因为它与剪贴板内容混淆(这

我想使用Word自动化(早期绑定)来拼写/语法检查TDBRichEdit组件的内容,同时在此过程中保留源代码的RTF格式。执行此操作的明显方法是按如下方式使用剪贴板:

  • DBRichEdit.SelectAll
  • DBRichEdit.Lines.CopyToClipboard
  • WordDoc.Content.Paste
  • 进行拼写/语法检查
  • WordDoc.Content.Copy
  • DBRichEdit.PasteFromClipboard
  • 它工作,但我认为这是糟糕的编程,因为它与剪贴板内容混淆(这可能是恼人的)。< /P> 我刚刚偶然发现了Range对象的FormattedText属性,它允许通过将RTF格式的文本指定给Range对象而不是通过剪贴板来复制和粘贴RTF格式的文本(包括段落格式)。它被宣布为

    属性FormattedText:Range read Get\u FormattedText write Set\u FormattedText

    在WordXP.pas中,我不知道如何分配TDBRichEdit的内容。是否可以使用该物业? 我也尝试过流式传输到word文档,但没有效果


    如果不使用剪贴板,如何将TDBRichEdit组件(DBRchEdit.Lines)的内容分配给Word文档(并在拼写/语法检查后恢复它?

    FWIW FormattedText属性对您没有帮助,因为您必须将格式化文本放入某个范围才能使用range.FormattedText。如果DBRichEdit还提供WordML格式(例如Word 2003格式或Valpopc),那么您可以考虑使用Rang.EntEntXML。如果没有,我认为您必须找到转换RTF的方法,或者将RTF放入磁盘文件中,然后通过Range.InsertFile插入。如果您直接使用磁盘上的OpenXML,AltChunk可能会工作,但我认为当您通过对象模型工作时,这是不可能的。只需在内存中构建一个平面OPC,并在--(您可以在内存中完成所有操作--如果您有OpenXML SDK,则更容易实现,但您也可以使用一个好的模板来完成这项工作[say as embedded resource]和XLinq)。然后,您可以在平面OPC上调用Range.InsertXml。为什么需要RTF格式进行拼写检查?
    ActiveDocument.Range.Text
    是将acsess转换为文档文本的变量