如何在Delphi中显示word文档,详示!(很简单的问题,总是没人说到点子上,100分) (100分)

W

wjfw

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在Delphi的Form窗口中浏览word文档(包括图片,文字等属性设置)
我用TOleContainer打开Word文档,但是无法上下左右移动浏览,怎么回事,就这么
简单的问题,不是去操纵Word程序编辑Word文档,
我不想在浏览界面上看到Word的任何编辑和控制,仅在OLEContianer窗口中浏览而已
 
最简单的方法是用TWebBrowser,例如WebBrowser1.Navigate('a.doc');
或者用OLE Container
 
太笼统了,无法回答,用word为关键词搜一下,有很多帖子。
 
OLE最方便了。
 
zw84611,如何用 OLE Container,能否提供一个范例!
 
用word为关键词搜一下,有很多帖子!

var
MSWord:eek:levariant;
begin
try
MSWord := CreateOLEObject('Word.Application');
except
ShowMessage('启动Word失败!请确认Word已正确安装');
exit;
end;
MSWord.Documents.Open (FileName:='e:/newword.doc', ReadOnly:=True);//打开已存在的word文档
//MSWord.Documents.Add; //创建一个新word文档
MSWord.Visible := 1;
end;
 
我只要在delphi的Form中上下浏览word文档即可
 
WebBrowser1.Navigate('a.doc');
 
zw84611,怎样控制为只读?
 
那就用OleContainer吧:
OleContainer1.CreateObjectFromFile('a.doc',False);
 
zw8461,怎样翻页浏览阿,那边有个窍门,没有scrollBar
 
看Delphi中自帶的例子!
 
P_W_Q:您的意思是转换为 RTF文件,然后用RichEdit显示?
我其实就是在窗口中简单的翻页浏览word文档!
 
最好用Rxlib的RxRichEdit控件,可读入word文档中大多数信息,图表、表格、图像....
可直接读入word文件以RTF格式存储的文档、或通过剪切板粘贴的信息。
 
我簡單說一下吧, 用TOleContainer顯示Word檔案, 可以這樣來實現, 只供參考.
procedure OpenWordFile(Target: TOleContainer; WordFile: String);
begin
Screen.Cursor:=crHourGlass;
wOldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
Target.DestroyObject;
if FileExists(WordFile) then begin
Target.CreateObjectFromFile(WordFile, False);
Target.DoVerb(ovPrimary);
setWordBars(Target, FALSE);
end;
else
Global.MsgDlg('FileNotFound', [mbOK]);
except
SetErrorMode(wOldErrorMode);
Screen.Cursor := crDefault;
end;
Screen.Cursor:=crDefault;
end;

procedure setWordBars(Target: TOleContainer; Show: Boolean);
begin
try
Target.OleObject.ActiveWindow.DisplayRulers := Show;
Target.OleObject.CommandBars['Menu Bar'].Enabled := Show;
Target.OleObject.CommandBars['Standard'].Enabled := Show;
Target.OleObject.CommandBars['Formatting'].Enabled := Show;
Target.OleObject.CommandBars['Drawing'].Enabled := Show;
except
ShowMessage(Exception(ExceptObject()).Message);
end;
end;
 
建议采用
WebBrowser1.Navigate('a.doc');
不要用TOleContainer,用这个双击时,可能出能出错
 
把TOleContainer的autoActive設置成aaManual, 雙擊就不會起作用了.
 
你的意思是想用TOleContainer来浏览Word文件,而已将word文件显示出来,
但只看见一部分,或只有第一页的一部分,而你想要有滚动条看见下面的部
分。
对于你的问题,你必须先要将TOleContainer设为Active,即在程序中实现在
操作时“编辑”弹出菜单同样的功能。这时候,Word的工具条等都会出现在
屏幕上,而你又不想要这些工具条出现,对吧!
要解决不显示工具条的问题:
一是如alextsui老兄所说,用Word的宏语句。如
Target.OleObject.CommandBars['Menu Bar'].Enabled := Show;
但这以前我没有实现过。
二是将TOleContainer放在一个TabSheet上,再建一个空的TabSheet页面。在
TOleContainer激活之后,利用程序将ActiveSheet置为空的TabSheet页面,再
置回来,工具条会消失!(有一点笨的办法,但能够起到实效。)
 
你的意思是想用TOleContainer来浏览Word文件,而已将word文件显示出来,
但只看见一部分,或只有第一页的一部分,而你想要有滚动条看见下面的部
分。
对于你的问题,你必须先要将TOleContainer设为Active,即在程序中实现在
操作时“编辑”弹出菜单同样的功能。这时候,Word的工具条等都会出现在
屏幕上,而你又不想要这些工具条出现,对吧!
要解决不显示工具条的问题:
一是如alextsui老兄所说,用Word的宏语句。如
Target.OleObject.CommandBars['Menu Bar'].Enabled := Show;
但这以前我没有实现过。
二是将TOleContainer放在一个TabSheet上,再建一个空的TabSheet页面。在
TOleContainer激活之后,利用程序将ActiveSheet置为空的TabSheet页面,再
置回来,工具条会消失!(有一点笨的办法,但能够起到实效。)
 
谢谢大家,我最后还是用RichEdit显示RTF文档的方式在窗口中显示文档,散分
 
顶部