如何使得文档在olecontainer中打开,而不是弹出一个新窗口打开(100分)

  • 主题发起人 主题发起人 oocoolie
  • 开始时间 开始时间
O

oocoolie

Unregistered / Unconfirmed
GUEST, unregistred user!

调用doverb(ovshow)时如果是word文档,则可以在olecontainer中打开,其它程序
都会自动打开相应的服务器程序来打开文档,只在olecontainer中显示一个图标

设置createobjectfromfile的第二个参数为false无效
设置allowinplace为true无效

请问有没有什么解决办法?
 
不会啊,你调用它的Edit就可以了,例如画笔,不要调用它的Open啊。你右击一下就知道了。
 
你说的是激活对象包?

 
先在form 里放一个olecontainer(Ole_Word),然后在其中放一个菜单(menu1).
菜单上加一个mnu_pro菜单项目,然后
......
....
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
mnu_verbs:Array[0..100] of TMenuitem;
VerbCount:integer;
procedure ItemClick(Sender:TObject);.
....
....
procedure TRptForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Ole_word.DestroyObject;
end;

procedure TRptForm2.ItemClick(Sender:TObject);
begin
Ole_Word.DoVerb((sender as TMenuItem).Tag);
end;

procedure TRptForm2.FormActivate(Sender: TObject);
var
i:integer;
//VerbCount:integer;
begin
if RptFileName='' then exit;
if not FileExists(RptFileName) then
begin
ShowMessage('文件不存在!');
exit;
end;
Ole_Word.CreateObjectFromFile(RptFileName,true);
try
for i:=0 to VerbCount do
if mnu_verbs<>nil then
begin
mnu_proc.delete(0);
mnu_verbs.free;
mnu_verbs:=nil;
end;
VerbCount:=ole_word.ObjectVerbs.Count;
if VerbCount<>0 then
for i:=0 to VerbCount-1 do
begin
mnu_verbs:=Tmenuitem.Create(self);
mnu_verbs.caption:=Ole_word.ObjectVerbs;
mnu_Verbs.tag:=i;
mnu_verbs.onclick:=ItemClick;
mnu_proc.Add(mnu_verbs);
end;
except
ShowMessage('Microsoft word error!');
end;
end;
 
后退
顶部