首页 > 解决方案 > 当第二个单词实例运行或激活时,单词功能区在 ole 容器中被禁用

问题描述

我正在使用带有 olecontainer 的 Delphi 应用程序来加载 Word 文档“OleContainer1.CreateObjectFromFile('c:\test\hello.docx', false);”。

功能区在打开的文档中运行良好,直到我打开另一个 Word 文档或激活另一个已经打开的 Word 文档。当我返回 Ole 容器中的文档时,功能区被禁用。我无法单击任何按钮或更改功能区选项卡。即使我关闭了另一个 word 文档,ole 文档中的功能区仍然处于禁用状态。

我正在使用 Word 2016 在 Windows 10 上工作

标签: delphims-wordoleribbonx

解决方案


Cindy 提供的链接实际上确实提供了一些调整的答案。非常感谢。但是,该链接指的是表单激活和停用。如果 ole 应用程序在您的主窗口中,则需要在应用程序事件中对其进行处理。如果不在主窗口中,那么您需要在formActivateetcformActivate中使用它,但是辅助表单将不会触发,application.activate因此还需要在应用程序事件中包含代码,这将触发formActivate辅助表单。以下适用于主要形式和应用程序中的 oleonActivate

 var
    iO: IOleInPlaceActiveObject;
begin
  if not VarIsClear(App) then begin
    if Supports(OleContainer1.OleObject, IOleInPlaceActiveObject, io) then
      IO.OnFrameWindowActivate(true);
end;

在应用程序中相同,但作为参数deactivate传递falseonFrameWindowActvate


推荐阅读