先uses Shellapi;
再调用:
ShellExecute(Handle,'open',PChar('d:\ex.doc'),nil,nil,SW_SHOWNORMAL);
//////////////////////////
uses ComObj ;
procedure TForm1.Button1Click(Sender: TObject);
var
vWord,vDoc : Variant ;
begin
vWord := CreateOleObject('Word.Application') ;//创建Word线程
try
//打开要操作的文件
vDoc := vWord.Documents.Open('C:\My Documents\AAAc.Doc');
except
showmessage('not found wordapp');
end ;
end;
//////////////////////////////////////
Olecontainer1.CreateObjectFromFile('文件名',false);
OleContainer1.DoVerb(0);
/////////////////////////////////
var
ItemIndex :OleVariant;
FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format,encoding,visible: OleVariant;
begin
if not OpenDialog1.Execute then
Exit;
{Open document}
FileName:= OpenDialog1.FileName;
ConfirmConversions:= False;
ReadOnly:= False;
AddToRecentFiles:= False;
encoding:=true;
PasswordDocument:= '';
PasswordTemplate:= '';
Revert:= True;
WritePasswordDocument:= '';
WritePasswordTemplate:= '';
Format:= wdOpenFormatDocument;
WordApplication1.Documents.Open(FileName,ConfirmConversions,ReadOnly,AddToRecentFiles,PasswordDocument,PasswordTemplate, Revert,WritePasswordDocument,WritePasswordTemplate,Format,Encoding,visible);
ItemIndex:=1;
WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex));
WordApplication1.Visible:=True;
{Turn Spell checking of because it takes a long time if enabled and slows down Winword}
WordApplication1.Options.CheckSpellingAsYouType := False;
WordApplication1.Options.CheckGrammarAsYouType := False;
end;
//////////////////////////////////////
var
vWord: Variant ;
begin
vWord := CreateOleObject('Word.Application') ;//创建Word线程
try
vWord.Documents.Open(FileName:='d:\a.Doc', ReadOnly:=True);//打开外部Word文档
vWord.Visible := 1;
except
showmessage('not found');
end ;
end;
////////////////////////////////////////////// 解决了OLE Container只显示一页的问题,供后生菜鸟参考:
把OLE Container的AutoActive属性设为aaGetFocus即可。
实际上是因为你的Ole Container 里面的对象没有被激活的原因
只需要在Ole Container 获得焦点的时候激活它就可以了,就是
设置AutoActive属性aaGetFocus即可,或者AutoActive属性设为
aa慢Manual,在调用DoVerb(ovShow)也可以