我的表单上有TWordApplication
个名为App
的组件。它的ConnectKind
属性设置为ckRunningOrNew
,AutoConnect
属性设置为True
。当我的程序完成后,Word窗口出现在屏幕上,完成一些任务后我关闭它。即使我致电App
,下次调用Disconnect
也会产生主题错误。
procedure ReportButtonClick(Sender: TObject);
var
Doc: _Document;
{ Some other variables }
begin
App.Disconnect; // calling after closing produces error
App.Connect;
Doc := App.Documents.Add('path_to_template', EmptyParam, EmptyParam, EmptyParam);
{ Working with Doc }
App.Visible := True;
end;
似乎很明显我不应该关闭Word,但我的客户认为保持Word始终打开对他们来说并不方便。我试图抓住异常但没有成功。
我应该如何处理这种情况?
答案 0 :(得分:2)
使用D7和Word2007,以下代码可以阻止用户关闭MS Word,方法是单击标题栏上的[x]或从菜单中关闭:
procedure TDefaultForm.WordApplication1DocumentBeforeClose(ASender: TObject;
const Doc: _Document; var Cancel: WordBool);
begin
Cancel := True;
end;
,但显然你想让用户知道为什么会这样。
但是,如果没有打开文档,它不会阻止Word关闭。
作为防止Word关闭的替代方法,显然您可以禁用应用程序的Word自动执行功能,完成正在进行的任何操作或完全关闭您的应用程序。我假设您知道如何在Word中获取活动文档,当前文本选择等。