我正在使用带有olecontainer的Delphi应用程序加载word文档&#34; OleContainer1.CreateObjectFromFile(&#39; c:\ test \ hello.docx&#39;,false);&#34;。< / p>
功能区在打开的文档中完美运行,直到我打开另一个Word文档或激活另一个已打开的word文档。当我返回Ole容器中的文档时,功能区被禁用。我无法单击任何按钮或更改功能区选项卡。即使我关闭了另一个word文档,ole文档中的功能区仍然处于禁用状态。
我正在使用Word 2016开发Windows 10
答案 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;
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}`);
}