如何正确关闭已经嵌入Word的Delphi程序?我关闭时总是报错。(30分)

  • 主题发起人 主题发起人 rlz
  • 开始时间 开始时间
R

rlz

Unregistered / Unconfirmed
GUEST, unregistred user!
我用如下方法嵌入:
OleContainer1.Enabled:=true;
OleContainer1.CreateObjectFromFile(OpenFile.FileName,false);
OleContainer1.DoVerb(ovShow); //运行此句,才可以启动Word进程,才能让WordApp连上
WordApp.Connect;
WordApp.Tag:=9595; //作一个标记
WordDoc.ConnectTo(WordApp.ActiveDocument);
WordApp.CommandBars['Standard'].Set_Enabled(false); //将工具栏设为不可见
wordApp.CommandBars['Formatting'].Set_Enabled(false);
OleContainer1.DoVerb(ovShow); //运行此句让工具栏不再出现
//btnOpen.Enabled:=false;
//Form1.OnResize:=FormRizeDo;
for iLoop:=1 to Worddoc.Bookmarks.Count do //将标签加到ComboBox1中
begin
vLoop:=iLoop;
ComboBox1.Items.Add(Worddoc.Bookmarks.item(vLoop).name);

end;

用如下方法关闭:
OleContainer1.Close ;
wordapp.Quit ;
wordapp.Disconnect ;
但总是报错。请大侠帮忙。
 
如果你是用Delphi的server页上的控件控制Word,一般的退出过程应该是

try
WordApplication.Quit //关闭Word
except
end //加try是因为Word有可能由用户自己关闭了,如果不加try会出现一个异常
WordApplicaiton.DisConnect


如果你是用CreateOLEObject('Word.Application')生成Word对象的话,

try
try
WordApplication.Quit;
except
end; //道理同上
fianlly
WordApplication := unassigned; //因为是自己手工创建的对象,所以要自己手工释放
end;

 
to hhxxj:
还是不行。“此方法或属性无效,因为这篇文章在另一程序当中”
 
你到底用的什么方法控制WORD?
 
OleContainer1.Close ;
;
wordapp.Disconnect

改成这样:
try
wordapp.Quit;
wordapp.disconnect;
finally
wordapp.free;
ole.close;
end;
先放word再放ole

 
有了OLEcontainer就不要用WordApplication了,你两个一起,当然会出现:。“此方法或属性无效,因为这篇文章在另一程序当中”
 
后退
顶部