我的程序,有一个TOleContaner控件,一个按钮,按钮点击就这么两句.
procedure TForm1.Button1Click(Sender: TObject);
var
OleObj:OleVariant;
begin
self.OleContainer1.CreateObjectFromFile('f:/1.doc',false);
self.OleContainer1.DoVerb(ovShow);
OleObj:=self.OleContainer1.OleObject.Application;
end;
打开后挺正常,但工具栏里的新建/打开/保存/打印预览都为灰色,另外菜单栏是怎么也不出来.我查了一天发现,所有相关的问题都是代码根我写的一样,然后问怎么把工具栏/菜单栏隐藏,我这md反了,怎么回事呀,那位给解释一下,是不是版本问题,我的delphi是7.0.
procedure TForm1.Button1Click(Sender: TObject);
var
OleObj:OleVariant;
begin
self.OleContainer1.CreateObjectFromFile('f:/1.doc',false);
self.OleContainer1.DoVerb(ovShow);
OleObj:=self.OleContainer1.OleObject.Application;
end;
打开后挺正常,但工具栏里的新建/打开/保存/打印预览都为灰色,另外菜单栏是怎么也不出来.我查了一天发现,所有相关的问题都是代码根我写的一样,然后问怎么把工具栏/菜单栏隐藏,我这md反了,怎么回事呀,那位给解释一下,是不是版本问题,我的delphi是7.0.
什么加"word加入菜单"?
就是word将原有的菜单与他本身的菜单合并起来,但是就是缺少“文件”这个子菜单
1.这是 Delphi VCL 底层控件 TOleForm 的限制,如果你确实需要“文件”菜单只能自己手动在 OleContainer 所在的 Form 中添加 TMainMenu并且设置相关MenuItem, OleContainer中的Word 激活后自然Menu会融合在一起。具体融合情况与MenuItem 的GroupIndex 有关,可参照 Delphi 的 Help.
2.Pizza 的话很对,OleContainer 只鼓励编辑文档,而不愿提供保存,打印等支持。我们只能在自己手动添加的MenuItem相应的OnClick处理函数自己完成这些工作。这就要复杂多了,要调用Word的Automation方法来完成。答案是可以完成的,但速度实在是个问题。关于Word的Automation 方法可查阅 Word 的 VBA Help.
要出菜单倒简单,在窗口加一个菜单控件即可。
要想新建/打开/保存/打印预览按钮可用则很难。即算用接口调用VBA的相应函数也很难实现。可在自定义菜单中实现新建/打开/保存,但要实现打印预览好象没有办法。
这也许是word中很多技术未公布,基本上用OleContainer1控制word实现商业化开发是一条死路。