2

我正在构建一个 delphi 表单以在 MS Word 中添加一个新的 Word 文档,并等待用户插入文本和编辑文档,保存文件并退出 MS Word,然后获取文件名和文件路径。

 WordApp := CreateOleObject('Word.Application');
 WordApp.Visible := True;
 Doc := WordApp.Documents.add();

等待用户插入文本并编辑文档并保存文件并退出表单 MS Word THEN

Doc.Save;
DocName := Doc.Name;
Docpath := IncludeTrailingPathDelimiter(Doc.path) + DocName;

with ZipForge1 do
begin
  FileName := Zipfilename;
  OpenArchive;
  Options.StorePath := spNoPath;
  AddFiles(Docpath);
  CloseArchive;
end;
4

1 回答 1

5

您可以编写自己的事件接收器来侦听 Word 应用程序的OnQuit事件。但是,切换到早期绑定 COM 会更容易。中的导入类型库Word2000.pas包含您需要的所有内容。

  • 用于TWordApplication您的应用程序对象。
  • 将您的处理程序分配给应用程序对象的事件。
  • 根据您想要做什么,似乎最适用的事件是OnDocumentBeforeCloseOnQuit

为了说明,这是我能设计的最简单的例子:

uses
  Word2000;

procedure TForm1.Button1Click(Sender: TObject);
var
  WordApp: TWordApplication;
begin
  WordApp := TWordApplication.Create(Self);
  WordApp.Visible := True;
  WordApp.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
  WordApp.OnQuit := WordAppQuit;
  WordApp.OnDocumentBeforeClose := WordDocumentBeforeClose;
end;

procedure TForm1.WordAppQuit(Sender: TObject);
begin
  ShowMessage('Word application quit');
end;

procedure TForm1.WordDocumentBeforeClose(ASender: TObject; 
  const Doc: WordDocument; var Cancel: WordBool);
begin
  ShowMessage(Doc.Name + ' closed');
end;
于 2013-01-28T09:11:38.533 回答