关于使用TOleContainer控制Word和用TWordApplication控制Word!(100分)

Z

zy_ball

Unregistered / Unconfirmed
GUEST, unregistred user!
1、目的:我要在程序窗体中嵌入Word,编辑文档
2、我尝试的经过:
(1)用TOleContainer
一切似乎都很顺利,加控件,编译一遍OK。
运行后发现:
。工具条悬浮在文档上面很难看,没有自动跑到我的程序工具条上去,
需要手动拖拉。还很容易把窗体弄得乱七八糟的,Word窗体一会大一会小的。
滚动条还会出现黑色,不刷新。
。我设的是自动激活,使用的是得到焦点激活
激活没问题,问题是我窗体里还有别的东西,我激活别的东西,Word失去焦点。
结果没办法再用鼠标激活它了,我还以为死了。试着用Tab键,可以激活。但是
你让客户也使用Tab键,估计他回砍死你。怎么回事?

好了,我折腾不出来了,用TWordApplication吧,听说这个好使,好歹是新东西。

(2)用TWordApplication
在窗体上摆了个TWordApplication,再摆个TWordDocument
写如下代码:
procedure TForm1.FormCreate(Sender: TObject);
var
itemindex :eek:levariant;
filename, confirmconversions, readonly, addtorecentfiles,
passworddocument, passwordtemplate, revert, writepassworddocument,
writepasswordtemplate, format, encoding, ovisible: olevariant;
begin
try
WordApplication1.Connect;
except
ShowMessage('没装Word吧?');
exit;
end;
filename := 'XXXXXX.doc';
confirmconversions := False;
readonly := False;
addtorecentfiles := False;
passworddocument := '';
passwordtemplate := '';
revert := True;
writepassworddocument := '';
writepasswordtemplate := '';
format := wdOpenFormatDocument;
encoding := 0;
ovisible := True;
//下面这个Open如果是Word97的话就没有最后的两个参数了
WordApplication1.Documents.Open(filename, confirmconversions,
readonly, addtorecentfiles, passworddocument, passwordtemplate,
revert, writepassworddocument, writepasswordtemplate, format, encoding, ovisible );
{assign worddocument component}
itemindex := 1;
WordDocument1.connectto(WordApplication1.documents.item(itemindex));
{turn spell checking of because it takes a long time if enabled and slows down winword}
WordApplication1.options.checkspellingasyoutype := False;
WordApplication1.options.checkgrammarasyoutype := False;
WordApplication1.visible := true;
end;

编译也很顺利,一次OK
运行后发现:
。Word打开了,跟我的Form是两个窗口?#$$%@#@%@^@^$,我打死你,
是谁告诉我好使来着?怎么弄到我的窗体里啊,各位老大,帮帮忙。

 
TWordApplication难以嵌入程序窗口,但用OLECONTAINER我已经试验并实现你的要求。

参考:
问题:如何保持OleContainer在失去焦点后的激活状态?
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1197541
 
>>工具条悬浮在文档上面很难看
这个没法
》》滚动条还会出现黑色》》多出一个滚动条
把主FORM的AutoScroll设置为False,然后在激活后执行OleContianer1.Align := alClient。
可以解决问题
 
谢谢
节日快乐

我解决了工具条的问题
其实也不叫解决
就是把TOleContainer控件放在最上面,就没问题了

 
to:zy_ball
你好,你好久没上过DFW了,最近可好?关于OLE问题希望能交流一下
QQ:28653297
Email:lovezuere@sina.com
 
顶部