簡體   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