Лента слов отключена в контейнере ole, когда запущен или активирован второй экземпляр - PullRequest
0 голосов
/ 06 июня 2018

Я использую приложение Delphi с olecontainer для загрузки текстового документа "OleContainer1.CreateObjectFromFile ('c: \ test \ hello.docx', false);".

Лента прекрасно работает воткрытый документ, пока я не открою документ с другим словом или не активирую другой документ с уже открытым словом.Когда я возвращаюсь к документу в контейнере Ole, лента отключается.Я не могу нажать ни на одну из кнопок или изменить вкладки ленты.Даже если я закрою другой документ Word, лента в старом документе останется отключенной.

Я работаю в Windows 10 с Word 2016

1 Ответ

0 голосов
/ 07 июня 2018

Ссылка , предоставленная Синди , действительно дала ответ с некоторыми изменениями.Большое спасибо.Тем не менее, ссылка относится к форме активировать и деактивировать.Если приложение ole находится в вашем главном окне, оно должно обрабатываться в событиях приложения.Если не в главном окне, то вам нужно это в formActivate и т. Д., Но formActivate вторичной формы не сработает на application.activate, поэтому потребуется также иметь код в событиях приложения, который вызовет formActivateвторичная форма.Следующее работает для ole в основной форме и в приложении 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

...