Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Word, OLE, builder - как выровнять текст по центру 
:(
    Опции темы
=Женек=
Дата 11.4.2012, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нагуглил кучу примеров, ни одни именно с выравниванием не работает.

Код

Variant VWord;
Variant VDoc;
Variant VTable;

VWord=CreateOleObject("Word.Application");
VWord.OlePropertySet("Visible",true);
VWord.OlePropertyGet("Documents").OleProcedure("Add");

VDoc=VWord.OlePropertyGet("Documents").OleFunction("Item",1);
VDoc.OlePropertyGet("Paragraphs").OleProcedure("Add");
VDoc.OlePropertyGet("Tables").OleProcedure("Add",
VDoc.OlePropertyGet("Paragraphs").OleFunction("Item",1).OlePropertyGet("Range"), 20, //кол-во строк
4, //кол-во столбцов
1, //если ноль - то у таблицы невидимые границы
0); //если единица - то таблица не растягивается на всю страницу по ширине

VTable=VDoc.OlePropertyGet("Tables").OleFunction("Item",1);

VTable.OleFunction("Cell",1,1).OlePropertyGet("Range"). OlePropertySet("Text","№"); //заполняем...
VTable.OleFunction("Cell",1,2).OlePropertyGet("Range"). OlePropertySet("Text","Точка"); //заполняем...
VTable.OleFunction("Cell",1,3).OlePropertyGet("Range"). OlePropertySet("Text","Охранник"); //заполняем...
VTable.OleFunction("Cell",1,4).OlePropertyGet("Range"). OlePropertySet("Text","Исполнение"); //заполняем...

VTable.OlePropertyGet("Columns").OleFunction("Item",1).OlePropertySet("Width",50); //Устанавливаем ширину первого столбца
VTable.OlePropertyGet("Columns").OleFunction("Item",2).OlePropertySet("Width",150); //Устанавливаем ширину первого столбца
VTable.OlePropertyGet("Columns").OleFunction("Item",3).OlePropertySet("Width",100); //Устанавливаем ширину первого столбца
VTable.OlePropertyGet("Columns").OleFunction("Item",4).OlePropertySet("Width",150); //Устанавливаем ширину первого столбца

VTable.OleFunction("Cell", 2, 1).OleProcedure("Merge", VTable.OleFunction("Cell", 2, 4));
VTable.OleFunction("Cell",2,1).OlePropertyGet("Range"). OlePropertySet("Text","Обход №1, начало в 09:00"); //заполняем...
VTable.OlePropertyGet("Cells", 1,1).OlePropertySet("HorizontalAlignment", 4);  // НУ КАК? А???

VTable.OleFunction("Cell", 2,1).OlePropertyGet("Range").OlePropertyGet("Font").OlePropertySet("Bold",1);
VTable.OleFunction("Cell", 2,1).OlePropertyGet("Range").OlePropertyGet("Font").OlePropertySet("Size",16);


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


Опытный
**


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

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



Вместо 
Код

...
VTable.OlePropertyGet("Cells", 1,1).OlePropertySet("HorizontalAlignment", 4);  // НУ КАК? А???
...


должно быть что-то вроде:
Код

...
VTable.OleFunction("Cell", 2,1).OlePropertyGet("Range").OlePropertyGet("ParagraphFormat").OlePropertySet("Alignment", 1);
...


Это сообщение отредактировал(а) Usper - 12.4.2012, 08:22


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


Deus vult
*


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

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



=Женек=, случайно наткнулся на ваш пример, он очень мне помог. Давно искал простой способ экспортирования StringGrig в Word. 
Но столкнулся с небольшой проблемой, подскажите пожалуйста, почему при экспортировании отрубаются строки?

Делаю таким образом, но в результате "Инженерная школа" становится "Инженерн", а "Показатель 1" - "Показа"

Код

for(int i = 1; i < sg_report->ColCount; i++)
        {
            VTable.OleFunction("Cell",1,i+1).OlePropertyGet("Range").OlePropertySet("Text", sg_report->Cells[i][0].c_str()); //заполняем...
        }


Что сделать, что бы строки не обрубались?

Это сообщение отредактировал(а) iDeus - 12.4.2012, 13:34
PM MAIL ICQ Skype GTalk   Вверх
xvr
Дата 12.4.2012, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

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



Цитата(iDeus @  12.4.2012,  13:33 Найти цитируемый пост)
Что сделать, что бы строки не обрубались?

Увеличте ширину столбцов в вашей таблице. Текст банально не помещается в ячейки

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


Deus vult
*


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

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



Цитата(xvr @ 12.4.2012,  14:31)
Цитата(iDeus @  12.4.2012,  13:33 Найти цитируемый пост)
Что сделать, что бы строки не обрубались?

Увеличте ширину столбцов в вашей таблице. Текст банально не помещается в ячейки

Не думаю, что проблема в этом, либо не так вас понял, результат выглядит так:

user posted image
PM MAIL ICQ Skype GTalk   Вверх
=Женек=
Дата 12.4.2012, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо, подскажите где толков про это почиать? Пользуюсь поиском - в оновном выдает примеры дл Excel, котороые не работают.

Вот в частности, ищу как изменить цвет ячейки. все крутится вокруг свойств Interior и ColorIndex. А приведенные в качестве примера строки не работают.
ВОт например
Код

   VTable.OleFunction("Cell",3+i*(REPORT.checkpoints_count+1)+j,4).OlePropertyGet("Range"). OlePropertyGet("Interior").OlePropertySet("ColorIndex", 4);


Как мне цвет фона поменять?
PM MAIL   Вверх
kemiisto
Дата 12.4.2012, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Рекомендую научиться пользоваться простым приёмом записи макроса и перевода его в код Delphi.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
=Женек=
Дата 12.4.2012, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Можно мне выразить желание не пользоваться макросом? 
Хочется именно OLE. 
PM MAIL   Вверх
kemiisto
Дата 12.4.2012, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



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

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



Цитата(=Женек= @  12.4.2012,  15:55 Найти цитируемый пост)
Можно мне выразить желание не пользоваться макросом?

Можно мне выразить желание читать внимательно информацию по ссылке?


--------------------
PM MAIL WWW GTalk Jabber   Вверх
=Женек=
Дата 12.4.2012, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Если ответите на мой вопрос, обещаю изучить и принять на вооружение, то что предложили вы.

А вообще я офигеваю: занялся я поиском на тему создания документов в Word программно. НАбрел на форум где был примерно такой диалог:


- здравствуйте! МНе бы с макросами поработать, дабы написать его в ворде и потом программно забивать.
- на хрен макросы, используй OLE и все пиши в нем.
- спасибо за совет, но не охота мне с нуля разбираться, к тому же макрос уже написан. Подскажите мне как мне состыковать готовый макрос и программу
- еще раз говорю, не занимайся геморроем, выкинь свой макрос, напиши весь сценарий в программе и разберись с OLE.
- да, но мой макрос сложный, на него затрачено много сил и времени, а дабы состыковать я хочу использовать TWordApplication, я уже его использую и мне всего-то пару строк написать надо, подскажите как? У меня сроки, завтра программу сдавать, мне некогда заниматься преквалификацией...
- я тебе сказал переходи на OLE.... 


На том же форуме я и нашел пример на OLE, разобрался, мне тоже осталось пару  моментов доделать - как сохранять замещая файл и как изменить цвет ячейки.
И что я вижу - на этом форуме все с точностью до наоборот -  забей на OLE, юзай макросы....

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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

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



Цитата(=Женек= @  12.4.2012,  19:07 Найти цитируемый пост)
И что я вижу - на этом форуме все с точностью до наоборот -  забей на OLE, юзай макросы....
Не было этого. Было предложение посмотреть, как это делается в макросе, и записать синтаксисом, применяемым в OLE, никто не советовал записывать макросы и их запускать из твоей программы

Макрос:
Код

    With Selection.Cells.Shading
        .Texture = wdTextureNone
        .ForegroundPatternColor = wdColorAutomatic
        .BackgroundPatternColor = wdColorBlue
    End With
Builder:
Код
// WdColor у меня описано в Word_XP.h
VTable.OleFunction("Cell", 1, 1).OlePropertyGet("Shading").OlePropertySet("BackgroundPatternColor", WdColor::wdColorBlue);
неужели настолько отличается одно от другого?
PM MAIL   Вверх
=Женек=
Дата 13.4.2012, 06:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Было предложение посмотреть, как это делается в макросе, и записать синтаксисом, применяемым в OLE, никто не советовал записывать макросы и их запускать из твоей программы



Согласен. И сам сообразил час назад. Забираю свои слова назад.
PM MAIL   Вверх
Riviero
Дата 16.4.2012, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А не проще компонентами для этого пользоваться?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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