Russian Qt Forum
Ноябрь 23, 2024, 01:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: ActiveQt word  (Прочитано 5722 раз)
Rofl113
Гость
« : Июнь 03, 2013, 10:47 »

Перерыл и этот форум и все близлежащие по версии "Google".
Две проблемы:
1). Не смог добавить таблицу после текста. (Все стерлось)
2). Выравнивание, как делать локально, а не глобально?

Очень прошу помочь

Вот собственно мой кусок программы (текст изменил)
Код:

    char const* const TablesAdd = "Add(QVariant&, QVariant&, QVariant&, QVariant&, QVariant&)";

    QAxObject *word = new QAxObject("Word.Application", this);
    cheackErr(word, "word");
    QAxObject *documents = word->querySubObject("Documents"); //получаем коллекцию документов
    cheackErr(documents, "documents");
    QAxObject *document = documents->querySubObject("Add()"); //добавляем свой документ в коллекцию
    cheackErr(document, "document");
    word->setProperty("Visible", true);

    QAxObject* ActiveDocument = word->querySubObject("ActiveDocument()");
    cheackErr(ActiveDocument, "ActiveDocument");
    ActiveDocument->setProperty("Name", tr("Список") ); //добавляем свой документ в коллекцию

    QAxObject* selection = word->querySubObject("Selection") ;
    cheackErr(selection, "selection");
    QAxObject* Range = ActiveDocument->querySubObject("Range()");
    cheackErr(Range, "Range");

    QAxObject *shrift = Range->querySubObject("Font");
    cheackErr(shrift, "shrift");
    shrift->setProperty("Size", 12); //задаем размер шрифта
    shrift->setProperty("Name", "Times New Roman");
    QString lol = shrift->property("Name").toString();
    ui->lineEdit->setText(lol);
    QAxObject* Tables = selection->querySubObject("Tables()");
    cheackErr(Tables, "Tables");

    //NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)", Range->dynamicCall("Range()"), 5, 3, 1, 2);
    QAxObject* NewTable = Tables->querySubObject("Add(const QVariant&, const QVariant&, const QVariant&, const QVariant&, const QVariant&)", ActiveDocument->dynamicCall("Range()"), 1, 3, 0, 2);
    cheackErr(NewTable, "NewTable");
    QAxObject* cell = NewTable->querySubObject("Cell(Row, Column)" , 0,1) ;
    cheackErr(cell, "cell");
    QAxObject* celR = cell->querySubObject("Range()") ;
    cheackErr(celR, "celR");

    //QAxObject* selection = ActiveDocument->querySubObject("Selection") ;
    QAxObject* pswds=selection->querySubObject("ParagraphFormat()");
    pswds->dynamicCall("SetAlignment(WdParagraphAlignment)" ,1) ;

    celR->querySubObject("InsertAfter(QString)", tr("«УТВЕРЖДАЮ»\n") );
    celR->querySubObject("InsertAfter(QString)", tr("Начальник Бобров\n") );
    celR->querySubObject("InsertAfter(QString)", tr("В.Б. Бобров\n\n") );
    celR->querySubObject("InsertAfter(QString)", tr("«      » ____________ 2013 г.\n") );
    cell = NewTable->querySubObject("Cell(Row, Column)" , 0,3) ;
    cheackErr(cell, "cell2");
    celR = cell->querySubObject("Range()") ;
    cheackErr(celR, "celR2");

    celR->querySubObject("InsertAfter(QString)", tr("Приложение               \n") );
    celR->querySubObject("InsertAfter(QString)", tr("к приказу №_____от______\n") );

    pswds=Range->querySubObject("ParagraphFormat()");
    cheackErr(pswds, "pswds");
    pswds->dynamicCall("SetAlignment(WdParagraphAlignment)" ,1) ; . выравнивает все.. а надо только текст последующий.
    Range->querySubObject("InsertAfter(QString)", tr("\nРассказ\n") );
    Range->querySubObject("InsertAfter(QString)", tr("Бобры всегда добры\n") );
    Range->querySubObject("InsertAfter(QString)", tr("Если ты добр\n") );
    Range->querySubObject("InsertAfter(QString)", tr("Значит в душе ты бобр\n") );
    Range->querySubObject("InsertAfter(QString)", tr("Товарищи бобры\n") );

    pswds=celR->querySubObject("ParagraphFormat()"); // приходится добавлять эти две строчки так как правая верхняя ячейка выравнивается со всем текстом
    pswds->dynamicCall("SetAlignment(WdParagraphAlignment)" ,0) ;

    NewTable = Tables->querySubObject("Add(Range, NumRows, NumColumns, DefaultTableBehavior, AutoFitBehavior)", ActiveDocument->dynamicCall("Range()"), 5, 3, 1, 2); // и тут все удаляется и добавляется таблица с нуля.

Код:
void cheackErr(QAxObject* o, QString s)
{
    s+=" не взялся";
    if (!o) QMessageBox::information(0,"",s);
}
Вызывал generateDocumentation но не смог найти нужное.
Заранее спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.091 секунд. Запросов: 20.