delphi - 当第二个单词实例运行或激活时,单词功能区在 ole 容器中被禁用
问题描述
我正在使用带有 olecontainer 的 Delphi 应用程序来加载 Word 文档“OleContainer1.CreateObjectFromFile('c:\test\hello.docx', false);”。
功能区在打开的文档中运行良好,直到我打开另一个 Word 文档或激活另一个已经打开的 Word 文档。当我返回 Ole 容器中的文档时,功能区被禁用。我无法单击任何按钮或更改功能区选项卡。即使我关闭了另一个 word 文档,ole 文档中的功能区仍然处于禁用状态。
我正在使用 Word 2016 在 Windows 10 上工作
解决方案
Cindy 提供的链接实际上确实提供了一些调整的答案。非常感谢。但是,该链接指的是表单激活和停用。如果 ole 应用程序在您的主窗口中,则需要在应用程序事件中对其进行处理。如果不在主窗口中,那么您需要在formActivate
etcformActivate
中使用它,但是辅助表单将不会触发,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
传递false
onFrameWindowActvate
推荐阅读
- javascript - 当 d3.js 中的单元格大小太小时删除文本
- javascript - 如果密码错误,Node 的加密解密是否总是抛出错误?
- javascript - 将多个观察者添加到 this.listener 到 React 组件类
- react-native - 是否可以将 React Navigation 与 snap.expo.io 一起使用?
- kubernetes - Kubectl pods are not created
- laravel - laravel 客户端 api 与 guzzle
- mysql - 排序规则将 utf8mb4_unicode_ci 更改为 utf8mb4_general_ci
- reactjs - 当上下文消费者中的任何状态发生变化时,React 是否会重新渲染所有组件?
- python - 如何解决“TypeError:不支持的格式字符串传递给 OSError.__format__”?
- python - 用另一个列表中的格式化文本替换列表中的文本