繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM