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 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是两个窗口?#$$%@#@%@^@^$,我打死你,
是谁告诉我好使来着?怎么弄到我的窗体里啊,各位老大,帮帮忙。
2、我尝试的经过:
(1)用TOleContainer
一切似乎都很顺利,加控件,编译一遍OK。
运行后发现:
。工具条悬浮在文档上面很难看,没有自动跑到我的程序工具条上去,
需要手动拖拉。还很容易把窗体弄得乱七八糟的,Word窗体一会大一会小的。
滚动条还会出现黑色,不刷新。
。我设的是自动激活,使用的是得到焦点激活
激活没问题,问题是我窗体里还有别的东西,我激活别的东西,Word失去焦点。
结果没办法再用鼠标激活它了,我还以为死了。试着用Tab键,可以激活。但是
你让客户也使用Tab键,估计他回砍死你。怎么回事?
好了,我折腾不出来了,用TWordApplication吧,听说这个好使,好歹是新东西。
(2)用TWordApplication
在窗体上摆了个TWordApplication,再摆个TWordDocument
写如下代码:
procedure TForm1.FormCreate(Sender: TObject);
var
itemindex 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是两个窗口?#$$%@#@%@^@^$,我打死你,
是谁告诉我好使来着?怎么弄到我的窗体里啊,各位老大,帮帮忙。