-
Нужно получить количество страниц в документе Word.
Вариант для позднего связывания:
uses Word2000, ComObj;
procedure TForm1.Button1Click(Sender: TObject); var WordApp: OLEVariant; SaveChanges: OleVariant; iPages : integer; begin SaveChanges := false; WordApp := CreateOleObject('Word.Application'); WordApp.Documents.Open('D:\Test.doc'); iPages := WordApp.ActiveDocument.BuiltInDocumentProperties[wdPropertyPages].Value; ShowMessage(IntToStr(iPages)); // ... // ... WordApp.Quit(SaveChanges, EmptyParam, EmptyParam); end;
Работает нормально.
Вариант для раннего связывания:
procedure TForm1.Button2Click(Sender: TObject); var WordApp: _Application; Doc: _Document; iPages : integer; Name : OleVariant; begin WordApp := CoWORDApplication.Create; Name := 'D:\Test.doc'; Doc := WordApp.Documents.Open(Name, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam); iPages := Doc.BuiltInDocumentProperties[wdPropertyPages].Value; ShowMessage(IntToStr(iPages)); end;
Выдает ошибку компиляции: Class does not have a default property То есть, как бы понятно, что Doc.BuiltInDocumentProperties возвращает тип IDispatch. Ну и что с ним дольше делать? А можно ли вызов свойства описать коротко и ясно, как в позднем связывании?
-
iPages := Doc.BuiltInDocumentProperties.Item[wdPropertyPages].Value;
-
А Вы проверили, или "по памяти" сказали?
Undeclared identifier: 'Item'
-
> Doc.BuiltInDocumentProperties возвращает тип IDispatch. > Ну и что с ним дольше делать?
дальше надо делать Invoke
-
Удалено модератором Примечание: спам
-
Удалено модератором Примечание: спам
|