Привет
Ситуация - создал ocx компонент для стороннего приложения. Задача компонента загрузить в OleContainer выбранный документ ms word... . Компонент регистрируется в системе.
Вызываю его из стороннего приложения - стартует процесс WinWord и открывается документ, все работает.
Запускаю второй раз, чтобы получить еще один документ в стороннем приложении - запускается ЕЩЕ ОДИН процесс WinWord, открывается документ - все работает, но у первого открытого документа панель инструментов становится недоступной, будто бы фокус на ней получить не удается. А у второго все в порядке. Документы прицеплены к разны процессам...
Дело даже не в том, что все это сохраняется как ocx - в MDI приложении тоже самое - на дочерних окнах создаю OleContainer и загружаю в него Ворд - вса аналогично, блокируется панель инструментов у ранее открытых доков. Хотя текст добавлять в документ по прежнему можно.
Код
(создается документ, сохраняется на диске а потом грузится в Контейнер через CreateObjectFromFile, к имени создаваемого документа для уникальности добавляется случайная последовательность цифр)
TApp:= TWordApplication.Create(Application);
TApp.AutoConnect:= True;
TApp.ConnectKind:= ckNewInstance;
Template:= 'normal'; Param:= False;
TApp.Documents.AddOld(Template, Param);
TDoc:= TWordDocument.Create(Application);
TDoc.ConnectTo(TApp.ActiveDocument);
FileNameNum:= Random(10000);
FileName:= 'file'+IntToStr(FileNameNum)+'.doc';
TDoc.SaveAs(FileName);
FileNamepath:= TDoc.Path+'\'+FileName;
OleCont:= MyToleContainerClassShowView.Create(Application);
OleCont.Parent:= Panel1;
OleCont.Align:= alClient;
OleCont.CreateObjectFromFile(FileNamePath, False);
Delphi 7.0