Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программно повернуть лист Word в альбомный 
:(
    Опции темы
Данкинг
Дата 7.3.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Нитонисе @  7.3.2010,  23:30 Найти цитируемый пост)
А как запустить ворд, открыть новый документ и повернуть лист в нем напрямую через OLE, а не через компоненты? 

Я на Билдере этого никогда не делал, только на Дельфи, но уверен на 99% что на форуме работа с Word'ом из Билдере где-нибудь да описывалась.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Нитонисе
Дата 7.3.2010, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(Данкинг @  7.3.2010,  23:40 Найти цитируемый пост)
Я на Билдере этого никогда не делал, только на Дельфи, но уверен на 99% что на форуме работа с Word'ом из Билдере где-нибудь да описывалась.
Да принцип-то работы есть, но вот конкретно поворота листа - нет.

PM MAIL   Вверх
Данкинг
Дата 8.3.2010, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Так аналогично: создаёшь OLE-объект и задаёшь ему нечто вроде
Код

word->ActiveDocument->PageSetup->Orientation=1;





--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Нитонисе
Дата 8.3.2010, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(Данкинг @  8.3.2010,  00:07 Найти цитируемый пост)
Так аналогично: создаёшь OLE-объект и задаёшь ему нечто вроде

Не, напрямую с OLE сам не разберусь... все же хотелось бы через компоненты. Что ж тут не так-то... Плохо что документации нету нигде по этим компонентам.
PM MAIL   Вверх
Нитонисе
Дата 8.3.2010, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Попробовал через напрямую через OLE подключиться к ворду и повернуть в нем лист
Код

Variant App,Docs,Doc;
App=CreateOleObject("Word.Application");
App.OlePropertySet("Visible",true);
Docs=App.OlePropertyGet("Documents");
Docs.OleProcedure("Add");
Doc=Docs.OleFunction("Item",1);
Doc.OlePropertyGet("PageSetup").OlePropertySet("Orientation",1);

Последняя строчка кода не выполняется. Ошибка с сообщением - "вызов был отклонен". Как переписать эту строчку, чтобы она работала?
PM MAIL   Вверх
Usper
Дата 9.3.2010, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Параметры страницы нужно устанавливать не для документа, а для таблицы:
Код
#include  <ComObj.hpp>

    Variant vVarApp, vVarBooks, vVarBook, vVarSheets, vVarSheet, vVarCells,
        vVarCell;
    try
    {
        vVarApp=CreateOleObject("Excel.Application");
    }
    catch (...)
    {
        Application->MessageBoxA("Не могу запустить сервер Microsoft Excel. Продолжение невозможно.",
            "Ошибка", MB_ICONERROR);
        return;
    }
    vVarApp.OlePropertySet("Visible",true);
    vVarBooks=vVarApp.OlePropertyGet("Workbooks");
    vVarApp.OlePropertySet("SheetsInNewWorkbook",3); //создаём 3 листа в книге
    vVarBooks.OleProcedure("Add");
    vVarBook=vVarBooks.OlePropertyGet("Item",1);
    vVarSheets=vVarBook.OlePropertyGet("Worksheets");
    vVarSheet=vVarSheets.OlePropertyGet("Item",1);
    vVarSheet.OleProcedure("Activate");
    vVarSheet.OlePropertyGet("PageSetup").OlePropertySet("Orientation",2);


И обратите внимание, что для альбомного режима параметру ориентация нужно присвоить значение 2, а не 1.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Нитонисе
Дата 9.3.2010, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(Usper @  9.3.2010,  09:34 Найти цитируемый пост)
Параметры страницы нужно устанавливать не для документа, а для таблицы:
Так мне надо вордовский лист развернуть, а не эксель.

PM MAIL   Вверх
Usper
Дата 9.3.2010, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Ой  smile . Тогда я не знаю почему не работает, у меня этот кусок кода выполняется без ошибок. Какая версия ОС и оффиса?


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Нитонисе
Дата 9.3.2010, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(Usper @  9.3.2010,  12:39 Найти цитируемый пост)
Ой   . Тогда я не знаю почему не работает, у меня этот кусок кода выполняется без ошибок. Какая версия ОС и оффиса?

ОС - XP SP 2
Word 2002.

У тебя мой код работает без ошибок и поворачивает лист?
PM MAIL   Вверх
Данкинг
Дата 9.3.2010, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Нитонисе, а в самом Ворде параметры страницы (альбомный вид т.е.) нормально выставляются, без ошибок? Бывает ещё, что "офис" тупит.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Нитонисе
Дата 9.3.2010, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(Данкинг @  9.3.2010,  12:44 Найти цитируемый пост)
Нитонисе, а в самом Ворде параметры страницы (альбомный вид т.е.) нормально выставляются, без ошибок? Бывает ещё, что "офис" тупит.

В самом ворде все работает. Вот так выглядит макрос.
Код

Sub Макрос12()
    With ActiveDocument.Styles(wdStyleNormal).Font
        If .NameFarEast = .NameAscii Then
            .NameAscii = ""
        End If
        .NameFarEast = ""
    End With
    With ActiveDocument.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientLandscape
        .TopMargin = CentimetersToPoints(3)
        .BottomMargin = CentimetersToPoints(1.5)
        .LeftMargin = CentimetersToPoints(2)
        .RightMargin = CentimetersToPoints(2)
        .Gutter = CentimetersToPoints(0)
        .HeaderDistance = CentimetersToPoints(1.25)
        .FooterDistance = CentimetersToPoints(1.25)
        .PageWidth = CentimetersToPoints(29.7)
        .PageHeight = CentimetersToPoints(21)
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
        .GutterPos = wdGutterPosLeft
    End With
    ShowVisualBasicEditor = True
End Sub



Все больше склоняюсь к тому чтобы поставить себе ворд 2007. Уже бы давно поставил, мне в нем не нравится цвет черного шрифта на белом фоне страницы - он какой-то размытый, глаза устают. А в этом ворде - четкий.
PM MAIL   Вверх
Usper
Дата 9.3.2010, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Цитата(Нитонисе @  9.3.2010,  12:43 Найти цитируемый пост)
У тебя мой код работает без ошибок и поворачивает лист?

Да, так и есть.
Прежде чем переходить на другую версия офиса я советую проверить его работоспособность с уже существующем кодом. Я уже сталкивался с тем, что одна и та же моя программа нормально работает с Excel 97-2003, но начинает глючить с Excel 2007.  При том, что макросы, генерируемые для выполнения нужных действий, одинаковы для разных версий Excel. Нужные мне действия просто не выполняются без сообщений об ошибке со стороны 2007 версии Excel :(.



--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Нитонисе
Дата 9.3.2010, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 917
Регистрация: 5.11.2009

Репутация: 2
Всего: 2



Цитата(Usper @  9.3.2010,  14:44 Найти цитируемый пост)
Да, так и есть.

А проверьте этот код
Код

WordApplication1->Connect();
WordApplication1->set_Visible(true);
WordApplication1->Documents->Add();
WordApplication1->ActiveDocument->PageSetup->Orientation = wdOrientLandscape;

Все то же самое, только через компоненты билдера.

У меня был установлен Office XP, переустановил на Office 2003, а потом и на Office 2007 - везде одна и та же ошибка.
PM MAIL   Вверх
sawfish
Дата 10.3.2010, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2008
Где: Новосибирск

Репутация: 8
Всего: 8



У меня Ваш код работает. Но разворот выполняется с задержкой около 10 сек.
XP Pro SP2
Word 2003 SP1
PM MAIL   Вверх
Usper
Дата 10.3.2010, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 325
Регистрация: 13.4.2007

Репутация: 15
Всего: 15



Аналогично, оба варианта работают, Win XP SP2 + Office 2003 и Office 2007.


--------------------
На посохе волшебном нехилый набалдашник, большой такой, огромный, нехилый набалдашник.
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0935 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.