gpt4 book ai didi

delphi如何在word ole自动化中插入换行符(下面的边框)

转载 作者:行者123 更新时间:2023-12-02 22:21:59 24 4
gpt4 key购买 nike

在 Word 应用程序中,当我键入 --- 并按 ENTER 键时,Word 会插入一条水平线 _____(即仅位于线条下方的边框)。

我需要插入相同的水平线,但使用delphi ole自动化。有人知道怎么做吗?我尝试过:

  Word := CreateOleObject('Word.Application');
Word.Visible := False;
Doc:=Word.Documents.Add;
Selection:=Word.Selection;
Range:= Word.Selection.Range;
Table:= Word.ActiveDocument.Tables;
View:= Word.ActiveWindow.View;
(...)
Word.ActiveWindow.ActivePane.View.SeekView := 10;
Selection.TypeText(Text :='---'#13#10); <--- No sucess!

欢迎任何帮助。

最佳答案

我想我已经找到了您所描述的行为差异的原因,以及通过自动化获得与手动输入类似的效果的几种方法。

当您手动键入内容时,Word 的自动更正/自动套用格式功能会“监听”您键入的内容,并且当它识别出已编程处理的内容(例如连续的三个连字符)时,它会进行干预并采取行动适当的自动更正/自动格式操作。

但是,在自动化调用中,如果您插入手动键入时会自动格式化的文本(通过 TypeText),则自动格式化不会自动发生 - 我想这可能是因为 TypeText() 绕过了 Word 的代码处理键盘输入。调用 TypeText() 的 Word 宏也有这种行为。但是您可以在自动化代码中调用它,如下所示:

  MSWord.Selection.TypeText('Some text');
MSWord.Selection.TypeText(#13#10);

MSWord.Selection.TypeText('---');
MSWord.Selection.Range.AutoFormat;

我还没有在其他自动套用格式条目上彻底测试过上述内容,我希望它能与它们一起使用,所以我认为它可能比其他方法具有“优势”,您不需要知道实际的格式化方式完成了:-)。

或者,您可以手动应用效果,如其他答案所示,或者通过我在最初尝试回答您的问题时发布的代码,即

  Word.Selection.TypeText('Some text');
Word.Selection.TypeText(#13#10);
Word.Selection.InlineShapes.AddHorizontalLineStandard;
Word.Selection.TypeText('More text');

希望在这三种可能性之间,您能够获得您想要的效果。

关于delphi如何在word ole自动化中插入换行符(下面的边框),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27450616/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com