Добрый день. Есть пара вопросов, никак не могу найти на них ответы. Буду признателен всем кто подскажет идеи.
Задача: есть дерево файлов и закладки (PageControl). юзер кликает на экселевский файл в дереве - файл отображается в текущей закладке. +юзер могёт переключаться между пейджами и созерцать открытые ранее файлы.
Текущее решение: лежит 5 пейджей и на них по TOleContainer'у. По клику выполняется -
Ole := TOleContainer(self.FindComponent('Ole' + IntToStr(pages.ActivePageIndex + 1)));
Ole.AutoVerbMenu := False;
Ole.AllowInPlace := true;
Ole.AllowActiveDoc := true;
Ole.CreateObjectFromFile(ShellTree.Path, false);
Ole.DoVerb(ovInPlaceActivate);
Ole.Refresh();
Проблема #1: есессно если до этого был открыт Excel то он блокируется. Как это можно обойти чтоб юзер мог спокойно переключаться между прогой/экселем? Иными словами как мне заставить олеобъект конектиться к новому (определённому) процесу экселя? Вариант выгружать/загружать объект по активации/деактивации отпадает. Варианты с TExcelApplication отпадают, потому что отображать нужно только в моей форме, никаких отдельных экселевских окон. ну или я чтото пропустил и такое можно сделать с помощью TExcelApplication.
Проблема #2: может я туплю, но в упор не понимаю что происходит с оле объектом когда контейнер теряет фокус. вопрос - что происходит при потере фокуса и как заставить олеобъект оставаться в том же состоянии, в котором он был после DoVerb(ovInPlaceActivate)?
Заранее спасибо.