使用 Delphi 将单词范围替换为内容控件
Replace a Word Range with a Content Control using Delphi
是否可以使用 Delphi 以编程方式将范围定义为 Word 中的 ContentControl?
我们有许多模板,其中根据用户在 Delphi 应用程序中所做的选择插入样板文本。这些选择也可能导致书签范围被删除。
我们更新或删除书签范围的代码如下:
var
R: WordRange;
bookmark: OleVariant;
...
bookmark := 'bookmarkName';
R := MainFOrm.WordDoc.Bookmarks.Item(bookmark).Range;
if (addText = true) begin
R.Text := 'This is the text to insert';
R.HighlightColorIndex := wdTurquoise;
end else begin
R.Delete(EmptyParam, EmptyParam);
end;
...
理想情况下,在上面的示例中,我们将范围定义为显示默认文本的富文本内容控件。
这将与上面的其他书签穿插。
或者我们可以在模板上定义富文本控件并根据需要更新它们的内容/删除它们?
以下将 Word 模板中的书签替换为富文本内容控件,显示所需的占位符文本
var
bookmark: OleVariant;
newCC: ContentControl;
ccBlock: BuildingBlock;
ccRange: WordRange;
R: WordRange;
begin
bookmark := 'bookmarkName';
R := MainForm.WordDoc.Bookmarks.Item(bookmark).Range;
// Clear any text in the template
R.Text := '';
// Create the new control
newCC := MainForm.WordDoc.ContentControls.Add(wdContentControlRichText, R);
// ccBlock and ccRange are optional but won't accept EmptyParam
newCC.SetPlaceholderText(ccBlock, ccRange, Trim(Memo2.Text));
// We can reuse ccRange to highlight the placeholder text. Defining earlier breaks setPlaceHolder
ccRange := newCC.Range;
ccRange.HighlightColorIndex := wdYellow;
end;
是否可以使用 Delphi 以编程方式将范围定义为 Word 中的 ContentControl?
我们有许多模板,其中根据用户在 Delphi 应用程序中所做的选择插入样板文本。这些选择也可能导致书签范围被删除。
我们更新或删除书签范围的代码如下:
var
R: WordRange;
bookmark: OleVariant;
...
bookmark := 'bookmarkName';
R := MainFOrm.WordDoc.Bookmarks.Item(bookmark).Range;
if (addText = true) begin
R.Text := 'This is the text to insert';
R.HighlightColorIndex := wdTurquoise;
end else begin
R.Delete(EmptyParam, EmptyParam);
end;
...
理想情况下,在上面的示例中,我们将范围定义为显示默认文本的富文本内容控件。
这将与上面的其他书签穿插。
或者我们可以在模板上定义富文本控件并根据需要更新它们的内容/删除它们?
以下将 Word 模板中的书签替换为富文本内容控件,显示所需的占位符文本
var
bookmark: OleVariant;
newCC: ContentControl;
ccBlock: BuildingBlock;
ccRange: WordRange;
R: WordRange;
begin
bookmark := 'bookmarkName';
R := MainForm.WordDoc.Bookmarks.Item(bookmark).Range;
// Clear any text in the template
R.Text := '';
// Create the new control
newCC := MainForm.WordDoc.ContentControls.Add(wdContentControlRichText, R);
// ccBlock and ccRange are optional but won't accept EmptyParam
newCC.SetPlaceholderText(ccBlock, ccRange, Trim(Memo2.Text));
// We can reuse ccRange to highlight the placeholder text. Defining earlier breaks setPlaceHolder
ccRange := newCC.Range;
ccRange.HighlightColorIndex := wdYellow;
end;