加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – TWordApplication和Word碰撞

发布时间:2020-12-15 09:06:00 所属栏目:大数据 来源:网络整理
导读:我在Delphi中使用TWordApplication.我的应用程序打开新的单词实例并在其文档上创建一些内容.问题是我第一次运行我的应用程序,然后打开真正的单词exe. Word exe没有打开新的单词实例,但它链接到我的应用程序实例.因此,当我的应用程序写入其文档时,所有文本都
我在Delphi中使用TWordApplication.我的应用程序打开新的单词实例并在其文档上创建一些内容.问题是我第一次运行我的应用程序,然后打开真正的单词exe. Word exe没有打开新的单词实例,但它链接到我的应用程序实例.因此,当我的应用程序写入其文档时,所有文本都显示在用户可见的exe文字上.

WordApp := TWordApplication.Create(nil);
WordApp.ConnectKind := ckNewInstance;
(WordApp.Documents.Add(EmptyParam,EmptyParam,varFalse ));

然后用户手动打开Word.

WordApp.Selection.Text := 'test test test';

用户在手动打开的Word中看到“测试测试”.

如果我首先手动打开Word并启动我的应用程序一切正常.

解决方法

这是Word的默认行为,它使用正在运行的实例.您需要做的是存储对要修改的文档的引用.因此,请勿使用ActiveDocument,而是使用您存储的文档.因为无法保证ActiveDocument是您认为的文档.

//starting Word
var
  App: TWordApplication;
  Doc: WordDocument;
begin
  App := TWordApplication.Create(nil);
  Doc := App.Documents.AddOld(EmptyVar,EmptyVar); //open new document

<..somewhere else..>
  //modifying Word
  Doc.DoWhateverIWant;  // <--see? no ActiveDocument,so you are not 
                      //             modifying the users doc

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读