delphi - 如何在Delphi XE7中获得变体点后的功能和属性建议?

标签 delphi object ms-word delphi-xe7 variant

我即将学习将 MsWord 与 Delphi 连接。我编写的小...非常小...程序正在运行,但我没有在对象的点之后得到建议。

我的代码(我复制了我认为有用的所有内容):

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, 
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, ComObj, ComCtrls, Vcl.StdCtrls;

var
  Form1: TForm1;
  word, doc : Variant;

implementation

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    word := CreateOleObject('Word.Application');
    word.Visible := true;
    doc := word.Documents.Add();
    word.Selection.Font.Name := ('Arial');
    doc.Range.Text := 'The answer is 42.';
    //doc.Save;
  except
    ShowMessage('Microsoft Word couldn''t start');
  end;
end;

谁能告诉我为什么我在输入“word”后没有得到任何功能或属性建议。或“文档”。我该如何解决这个问题?

提前致谢,

莉亚

最佳答案

当您通过CreateOleObject函数使用OLE自动化时,Delphi没有有关对象方法或属性的数据,因此它无法调用代码完成。当您的代码编译时,它只是创建 IDispatch 接口(interface)调用,因此从技术上讲,您可以编写任何不存在的方法名称(例如 doc.SomeSillyNonExistentFunction),它将成功编译并失败仅在运行时。这称为后期绑定(bind) - 函数存在和参数检查是在运行时而不是编译时执行的。要访问类型数据,您必须导入 Office 类型库,或使用 Delphi 办公自动化 VCL 组件,这几乎是相同的。

更新: 要安装 Office VCL 组件,请使用菜单组件->安装包并启用包Microsoft Office 示例自动化服务器包装组件。它将在组件选项板中添加一个新选项卡。如果没有这样的包(我有XE1,无法检查),请使用菜单组件->导入组件,选择导入类型库选项,然后找到Office Word/Excel/etc 列表中的类型库。

关于delphi - 如何在Delphi XE7中获得变体点后的功能和属性建议?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32376741/

相关文章:

delphi - 使用 C++ Builder 包时如何解决未解析的外部问题?

json - Delphi:JSON 数组

python - 如何拥有默认对象属性并可以选择设置它?

c# - 如何使用 OOXML 删除 WordProcessingML 中的 TableRow?

excel - 确定 VBA 2007 中对象变量的库名称..?

delphi - 我需要释放列表中的元素吗?

javascript - 数组的数组,JSON.stringify() 给出空数组而不是整个对象

javascript - 如何合并不规则物体

excel - 在 Excel 文件中查找字符串并获取行索引

delphi - 将delphi过程作为方法调用