Официальный сайт студ.городка НГТУ
Программирование и БД » C++Builder и Word 

#1  10.07.06 23:47

C++Builder и Word

Моя прога формирует Word документ и ей необходимо узнать сколько страниц в документе.
Эта тема много раз подымалась на разных форумах, но ответы писали исключительно для VB или Dephi:
что то вроде -
ActiveDocument.BuiltInDocumentProperties[wdPropertyPages].Value

Для C++Builder WordApplication->ActiveDocument->BuiltInDocumentProperties
это IDispatch и там сплошные заморочки.
можно ли как нибудь через WordApplication???

Offline

#2  11.07.06 11:21

Re: C++Builder и Word

Mitek написал(а):

это IDispatch и там сплошные заморочки.

Что значит заморочки? Как раз все предельно понятно.

Offline

#3  11.07.06 12:24

Re: C++Builder и Word

решения для делфи прекрасно подходят для билдера

Offline

#4  11.07.06 12:26

Re: C++Builder и Word

2otaky: если несложно то напиши пожалуйста любой пример с Delphi(по теме)
Как раз
ActiveDocument.BuiltInDocumentProperties[wdPropertyPages].Value и есть решения для Delphi,
а для C++ ни скоьлко не подходит.

Исправлено Mitek (11.07.06 13:10)

Offline

#5  11.07.06 12:48

Re: C++Builder и Word

MadSlayer написал(а):

Mitek написал(а):

это IDispatch и там сплошные заморочки.

Что значит заморочки? Как раз все предельно понятно.

IDispatch просто очень неудобный и громоздкий интерфейс. Вот сравни:

OLECHAR* szMember = L"Visible";
pAppl-GetIDsOfNames(IID_NULL, &szMember , 1, LOCALE_SYSTEM_DEFAULT,
&dispid);
DISPPARAMS params;
params.rgvarg = new VARIANT[10];
params.rgdispidNamedArgs = new DISPID[10];
params.rgvarg[0].vt = VT_BOOL;
params.rgvarg[0].boolVal = true;
params.rgdispidNamedArgs[0] = DISPID_PROPERTYPUT;
params.cArgs = 1;
params.cNamedArgs = 1;
pAppl-Invoke(dispid, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYPUT, &params, NULL, NULL, NULL);

или

WordApplication->set_Visible(true);

Оба способа делают одно и тоже.

Offline

#6  11.07.06 13:01

Re: C++Builder и Word

Mitek написал(а):

IDispatch просто очень неудобный и громоздкий интерфейс. Вот сравни:

Потому что он достаточно универсальный ))

Offline

#7  14.07.06 13:28

Re: C++Builder и Word

Вообщем ответ на свой вопрос я сам же и нашел. Может кому то будет полезно знать.
С IDispatch-ем заморачиваться не имеет смысла:

long Pages;
OleVariant IncludeFootnotes = True;
WordApplication->ActiveDocument->ComputeStatistics(wdStatisticPages,IncludeFootnotes,&Pages);

Pages - кол-во страниц

Offline

Программирование и БД » C++Builder и Word 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.257 сек.
Выполнено 14 запросов.