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