关于OLE与WORD的嵌入问题。(40分)(40分)

  • 主题发起人 主题发起人 yanghaijun
  • 开始时间 开始时间
Y

yanghaijun

Unregistered / Unconfirmed
GUEST, unregistred user!
1、我用一Container并嵌入了一WORD文档,可是我怎么也不能将其在
Container外调出,只能嵌入在Container容器内,这是怎么回事?
2、在容器内嵌入时,无法打开WORD的“文件”菜单,这又是怎么回事?
我的目的是想使用用户能进行页面设置,总之,我如何能使用原WORD中
文件菜单的功能呢?
 
1.由于Ole是图象之映象,其有独独特的结构形式,所以只能在Ole容器内显示;
2、在嵌入Ole时,只有本地激活的Ole才能与用户的菜单相融合,即只有本地激活,
才能使用Word的菜单。
 
必须用olecontainer吗?动态创建行不行?用wordbasic语句访问CommandBars非常
方便,功能也强,用olecontainer控制文档没试过。
 
动态创建也行,只要你能让我得到页面设置等功能,怎样都行,将方法与源码
给我,分就是你的了。
 
坛主,你也可关心一下我等草民嘛,我真的很想知道是怎么回事。呜......
 
1、我用一Container并嵌入了一WORD文档,可是我怎么也不能将其在
Container外调出,只能嵌入在Container容器内,这是怎么回事?
2、在容器内嵌入时,无法打开WORD的“文件”菜单,这又是怎么回事?
我的目的是想使用用户能进行页面设置,总之,我如何能使用原WORD中
文件菜单的功能呢?

1、用 Doverb(2) 和 DoVerb(1) 或 Doverb(0) 试试?
2、在OLE容器中文件菜单是被屏蔽的,不能被使用,你可利用容器的saveas 和 save ..
 
打印要使用 wordbasic 了:

你可以参考 VbaWord8.hlp 在office 97 光盘上有。
用法可参考:

var
myWord: Variant;
DocFile: string;
begin
DocFile:= ObjectFileName; //生成的临时文件名;
myWord := OleContainer1.OleObject.Application.WordBasic; //创建word basic对象。
myWord.FilePrint(Range := 0, Type := 0, FileName := DocFile); // 调用语句,打印正文
end;
 
我想知道的是如何进行“页面设置”,因为在OLE容器内WORD的页面好像用户不能
进行定义,这岂不是很不合理?
 
to yanghaijun:
SORRY, 我对OLE AUTOMATION不熟悉,此题不会
 
1.OleContainer使用连接文档方可调用;
2.若使用Word的菜单,对OLE应使用当前服务器激活方式。但这只是进行菜单的融合。
 
我试了半天,正常应该用filepagesetup来调用,但执行后却没有反应?!

a:=CreateOleObject('word.basic');
a.appshow;
a.filenew;
a.filepagesetup;
a.fileprint;
...
只有想想其它办法了。用wordbasic中的commandbars或dialogs.show不知行不行,
再试试吧。:(

 
file 菜单中的printsetup与pagesetup两个命令无效,其它均正常。
其它菜单的命令没试,好象是除标准对话框以外的对话框好用。听听其它高手的意见
吧。你需要知道所有有效wordbasic命令吗? :)
 
TO Menxin:
我要,请发到这里<a href="mailto://yanghaijun@yeah.net">yanghaijun@yeah.net</a>
另外,我已知道如何在容器外使用WORD,但我依然强烈地希望能在容器内实现
页面设置的功能,看来WORD是不会支持的了。
坛主,能不能把本题的分加到60分,我好分给这几位大侠。
Suny:10 jams:20 menxin:30 王寒松:0000000000000000000000000
 
哈哈,不用发了,大家共享吧。这也是我在解决你的问题时的无意发现,真是收获不
少啊。
视图->工具栏->自定义->命令->键盘!
 
>你需要知道所有有效wordbasic命令吗?

晓茶很迷惑,所有WordBasic命令不都在vbawrd8.hlp里头吗?
 
To menxin:
我不知道你为什么高兴,你能说清楚点吗?别吊我的味口。
大侠,快告诉我。
 
???
我的意思是,动态创建ole对象时,该对象的方法(如上例中的a.filenew)在delphi
中当然不会找到,在vbhelp中也不会有,也许其它人在其它的地方找到,反正我以前
不知道。只是从资料中查阅,有些甚至是猜的,后来才知道。
 
word 中包含了一个pagesetup对象
使用该对象的属性与方法就可以设置叶面了。
我要去吃饭了待会在铁代码吧
 
to:yanghaijun
终于联上了
。。。
procedure TForm1.pagesetup1Click(Sender: TObject);
var pagesetup:Variant;
begin
pagesetup:=OleContainer1.OleObject .pagesetup;

pagesetup.LeftMargin:= 7;
pagesetup.RightMargin:= 10;
pagesetup.TopMargin:=20;
pagesetup.BottomMargin:=20;

end;
怎么样?!不用我多说了吧?!
 
问题不大不小,招来这么多高手参与,甚为荣幸。
To BiJ:
我还想偷个懒,PageSetup对象有没有直接调出WORD页面设置对话框的方法,
如PageSetup.Setup什么的,免得自己再去编。如果实在没有,也只有这么的了。
 
后退
顶部