Конференция "Corba" » Excel через TOleContainer в Delphi [Delphi, Windows]
 
  • ulir (27.09.07 16:40) [0]
    Добрый день. Есть пара вопросов, никак не могу найти на них ответы. Буду признателен всем кто подскажет идеи.
    Задача: есть дерево файлов и закладки (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)?
    Заранее спасибо.
  • Magedon © (27.09.07 17:25) [1]
    > Проблема #1:

    Я вот, например, делаю так
    var
     OfficeApp: TOleServer;
    ...
      OfficeApp := TExcelApplication.Create(nil);
      ...
      //тра-ля-ля
      ...
      TExcelApplication(OfficeApp).Quit;




    И никаких видимых екселев.

    Успехов)
  • ulir (27.09.07 17:38) [2]
    так в том то и дело, мне нужен видимый эксел ))
    только он мне нужен видимым на моей форме и только там, без отдельных экселевских окон. А в таком варианте процесс то будет, но как его отобразить - хз. Вообще этот олеконтейенр кривой какойто, но других вариантов я вообще не нашёл ((
 
Конференция "Corba" » Excel через TOleContainer в Delphi [Delphi, Windows]
Есть новые Нет новых   [134430   +2][b:0][p:0.001]