[英]delphi how to insert line break (border below) in word ole automation
在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的AutoCorrect / AutoFormat设施会“监听”您输入的内容,并且当它识别出已对其编程进行操作的内容(例如连续三个连字符)时,它将干预并采用适当的AutoCorrect /自动套用格式操作。
但是,在自动调用中,如果您插入(通过TypeText)如果手动键入会自动格式化的文本,则不会自动发生“自动套用格式”-我想这可能是因为TypeText()绕过了处理键盘输入的Word代码。 调用TypeText()的Word宏也具有这种行为。 invoke it in your automation code, like this: 但是您在自动化代码中调用它,如下所示:
MSWord.Selection.TypeText('Some text');
MSWord.Selection.TypeText(#13#10);
MSWord.Selection.TypeText('---');
MSWord.Selection.Range.AutoFormat;
我还没有在其他AutoFormat条目上对上述内容进行彻底的测试,我希望它可以与它们一起使用,因此我想它可能比其他方法具有“优势”,您不需要知道如何真正完成格式化: - )。
或者,您可以手动应用效果,如其他答案所示,或者通过我最初尝试回答q时发布的代码,即
Word.Selection.TypeText('Some text');
Word.Selection.TypeText(#13#10);
Word.Selection.InlineShapes.AddHorizontalLineStandard;
Word.Selection.TypeText('More text');
希望在这三种可能性之间,您将能够获得想要的效果。
下面在(wdBorderBottom)下添加边框。
const
wdBorderBottom = -3;
wdLineStyleSingle = 1;
wdLineWidth075pt = 6;
wdColorBlack = 0;
var
Border: OleVariant;
begin
// ...
Border := Word.Selection.Borders[wdBorderBottom];
Border.LineStyle := wdLineStyleSingle;
Border.LineWidth := wdLineWidth075pt;
Border.Color := wdColorBlack;
// ...
end;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.