当第二个单词实例运行或激活时,在ole容器中禁用Word功能区

时间:2018-06-06 15:05:48

标签: delphi ms-word ole ribbonx

我正在使用带有olecontainer的Delphi应用程序加载word文档&#34; OleContainer1.CreateObjectFromFile(&#39; c:\ test \ hello.docx&#39;,false);&#34;。< / p>

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

我正在使用Word 2016开发Windows 10

1 个答案:

答案 0 :(得分:2)

link provided by Cindy确实提供了一些调整的答案。非常感谢。但是,链接指的是表单激活和停用。如果ole应用程序位于主窗口中,则需要在应用程序事件中处理它。如果不在主窗口中,那么您需要formActivate等,但formActivate的辅助表单的application.activate将不会在formActivate上触发,因此需要在应用程序事件中包含代码才能触发次要表格的onActivate。以下适用于主要形式和应用程序 var iO: IOleInPlaceActiveObject; begin if not VarIsClear(App) then begin if Supports(OleContainer1.OleObject, IOleInPlaceActiveObject, io) then IO.OnFrameWindowActivate(true); end;

中的ole
deactivate

在应用false中相同,但将onFrameWindowActvate作为var set = 'bcad'; // in any order var tests = [ 'abcd', // true 'bcad', // true 'abc', // false (need all characters) 'abbd', // false 'abcdd', // false ]; var setSorted = set.split('').sort().join(); for (var i = 0; i < tests.length; i++) { var pass = setSorted == tests[i].split('').sort().join(); console.log(`${tests[i]}: ${pass}`); }

的参数传递