Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > MS Word OleContainer


Автор: rith2 5.5.2009, 10:38
Привет

В ActiveForm поместил OleContainer и сохранил как .ocx. Подразумевается, что стороннее приложение написанное на Python будет загружать свои документы MS Word  в этот компонент. Метод загрузки документа MS Word:

Код

procedure TOLEContainerX.Open(const Value: WideString); // Value - Путь к документу.doc
var
   v:OleVariant;
   Doc:_Document;
   empty:OleVariant;
begin
  v := Value;
  OleContainer.CreateObjectFromFile(Value, False);
  OleContainer.DoVerb(ovShow);
  Doc:=(OleContainer.OleObjectInterface as _Document);
  Doc.Application.Documents.Open(v, empty, empty, empty, empty, empty, empty, empty, empty, empty);
  Doc.Application.Run('"InsText"'); //Пытаюсь вызвать макрос
  Doc.Application.Visible := True;


Из Python получается получить доступ к этой библиотеке и вызвать метод. В OleContainer'е открывается необходимый документ, но я не могу выполнять в нем операции. например не выполняется строка - Doc.Application.Run('InsMac'). То есть методы вроде бы отрабатывают, но на открытом документе это никак не сказывается.

В чем моя ошибка? Может быть неправильно получаю доступ к документу?

Автор: rith2 5.5.2009, 12:43
Забыл добавить: тип _Document из стандартной библиотеки в Delphi 7 - Word97

Автор: rith2 5.5.2009, 17:44
Вот так все работает

Код

  v := Value;
  OleContainer.CreateObjectFromFile(Value, False);
  OleContainer.DoVerb(ovShow);
  Doc:=(OleContainer.OleObjectInterface as _Document);


Оказывается еще на стороне Python'a дофига косяков было... ща все работает. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)