问题1: 我用ole打开一个,通过流对象取出并显示文档后,用如下语句和
wordApp关联:
……
OleContainer1.LoadFromStream(tAbs);
OleContainer1.doVerb(ovShow);//显示文档 WordApp.Connect;
WordDoc.ConnectTo(WordApp.ActiveDocument);
然后:WordApp.CommandBars['standard'].Set_Enabled(Not ISReadOnly);
WordApp.CommandBars['standard'].Set_Enabled(true);
WordApp.CommandBars['standard'].Set_Visible(true);
WordApp.CommandBars['Formatting'].Set_Enabled(false);
WordApp.CommandBars['Formatting'].Set_Visible(false);
…………
但是这好象根本不能控制word环境中Button组的可视/不可视,做少是有些机器可以,有些机器上不可以,什么原因? 我怀疑 WordApp.Connect有问题,这个wordApp和oleContainer对象中显示的word根本不是同一个;但是
WordApp.UserName:='XXXX';又能起作用,奇怪Ing
wordApp关联:
……
OleContainer1.LoadFromStream(tAbs);
OleContainer1.doVerb(ovShow);//显示文档 WordApp.Connect;
WordDoc.ConnectTo(WordApp.ActiveDocument);
然后:WordApp.CommandBars['standard'].Set_Enabled(Not ISReadOnly);
WordApp.CommandBars['standard'].Set_Enabled(true);
WordApp.CommandBars['standard'].Set_Visible(true);
WordApp.CommandBars['Formatting'].Set_Enabled(false);
WordApp.CommandBars['Formatting'].Set_Visible(false);
…………
但是这好象根本不能控制word环境中Button组的可视/不可视,做少是有些机器可以,有些机器上不可以,什么原因? 我怀疑 WordApp.Connect有问题,这个wordApp和oleContainer对象中显示的word根本不是同一个;但是
WordApp.UserName:='XXXX';又能起作用,奇怪Ing
则原来oleContainer中可编辑的文档不可编辑了(包括你把外面启动的word关闭), 而只有外面打开的可编辑!我怀疑和语句WordDoc.ConnectTo(WordApp.ActiveDocument)有关,可能此时的WordDoc已经是外面打开的那个word中的Document了,怎么解决! 但是如果关闭外面打开的word而在从控件中重新打开,则又是可以编辑的了! 奇怪Ing!问题3:好象ole特别消耗内存,调用后怎么释放?我只是把它ole 和wordDoc 都close了,但多开几个或多调用几次,则内存不
足(但我的机器能同时打开的word数量远超这个),要怎么释放? 另外,我重载了控件的构造函数,想在其中来执行
上面说的close方法,但好象此构造函数(过程)中根本不允许操作控件上的对象,一操作就就提示内存地址冲突,为什么?
我只有另写一个方法给外部显式的调用!觉得别扭