Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585

TWordApplication - Добавление и форматирование изображений

07.08.2013, 11:22. Показов 1768. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Покопавшись в интернете, нашел только один способ добавления (передачи) изображения в документ Word - вставка через буфер обмена, например, так:
C++
1
2
3
4
WordRangePtr Range; 
Range = WordDocument->Range(TVariant(WordDocument->Characters->Count-1));
Clipboard()->Assign(Image1->Picture);
Range->Paste();
Но почему то этот способ, в среднем, 1 раз из 10 не срабатывает: передается пустая строка.
Есть ли другие способы передачи изображений из своей программы в документ Word? И как это изображение потом форматировать, т.е. как к нему получить доступ, чтобы изменять свойства, которые есть, например, в меню "Формат рисунка"?
Для таблиц, например, есть WordDocument->Tables, для фигур WordDocument->Shapes, а для изображений что?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.08.2013, 11:22
Ответы с готовыми решениями:

TWordApplication - Добавление и работа с таблицами
Работаю в С++Builder 2010. Компоненты OfficeXP. Пишу простенький генератор автоотчетов Word с использованием компонента TWordApplication....

Смена изображений и добавление текста
Привет. Делаю последовательное замену фотографий в TImage потом на одном из изображений хочу добавить текст. и появляется ошибка: Can...

помогите с TWordDocument и TWordApplication
TWordDocument и TWordApplication, по этим компонентам невозможно найти какой либо хелп или справку, подкиньте ссылочку какую нить, где мне...

6
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
09.08.2013, 01:08
Работа с OLE-сервером Word
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
09.08.2013, 02:19  [ТС]
Спасибо, но с этим сайтом я знаком, и он не имеет отношения к моему вопросу.

Кстати, решил записать макрос во время работы с изображением в Word, так во время записи макроса половина свойств недоступна и мой Word (2010) вылетает с критической ошибкой(...

Анализ свойства WordDocument->Shapes->Count показал, что изображения, которые добавляются как файлы и есть Shapes (как разновидность что ли), а те, которые вставляются из буфера обмена вообще никак не фигурируют, и как к ним получить доступ - вопрос открытый. Хотя, возможно, что никак.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33403 / 21513 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
09.08.2013, 02:31
Все изображения - это элементы коллекции InlineShapes. Какой именно шейп - проверяется через свойство Type - тебя особенно должны заинтересовать wdInlineShapeLinkedPicture и wdInlineShapePicture ... Для добавления изображения в документ можно воспользоваться методом AddPicture из того же InlineShapes...
1
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
09.08.2013, 13:15  [ТС]
Метод AddPicture не очень подходит, т.к. добавляет картинку из файла. Я бы хотел вставлять картинки напрямую (рисую их на TBitmap в своей программе), чтобы не создавать временные файлы.
Не могу найти как задать тип "Обтекание текстом". Не подскажете?

Добавлено через 13 минут
C++
1
2
3
    InlineShapePtr isp;
isp = WordDocument->InlineShapes->Item(1);
isp->Range->ShapeRange->WrapFormat->Type = WdWrapType::wdWrapTopBottom;
не работает...
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33403 / 21513 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
09.08.2013, 13:38
Цитата Сообщение от znseday Посмотреть сообщение
Я бы хотел вставлять картинки напрямую
Если напрямую - то другого способа, кроме Paste, я не встречал. Да и не искал, если честно. Никогда не было особой проблемы: написать функцию, которая сохранит картинку в файл, вставит ее в документ Office, и тут же удалит этот файл.
Цитата Сообщение от znseday Посмотреть сообщение
как задать тип "Обтекание текстом"
Почему wdWrapTopToBottom, а не wdWrapTight, который задает именно обтекание со всех сторон?
0
18 / 18 / 7
Регистрация: 20.03.2012
Сообщений: 585
09.08.2013, 14:34  [ТС]
Цитата Сообщение от UI Посмотреть сообщение
Никогда не было особой проблемы: написать функцию, которая сохранит картинку в файл, вставит ее в документ Office, и тут же удалит этот файл.
В принципе не проблема, но если исходных картинок много, штук 10 и все 8MPix, то нужно тестировать как это на производительности будет сказываться... Скорее всего Paste буду использовать, но как сложится.
Цитата Сообщение от UI Посмотреть сообщение
Почему wdWrapTopToBottom, а не wdWrapTight, который задает именно обтекание со всех сторон?
Потому, что я хочу именно wdWrapTopToBottom, чтобы гарантировано текста не было слева или справа при дальнейших манипуляциях с рисунками, которые захочет пользователь.

Добавлено через 1 минуту
А вот так работает:
C++
1
2
3
4
    InlineShapePtr isp;
isp = WordDocument->InlineShapes->Item(1);
isp->Select();
WordDocument->ActiveWindow->Selection->ShapeRange->WrapFormat->Type = WdWrapType::wdWrapTopBottom;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.08.2013, 14:34
Помогаю со студенческими работами здесь

TWordApplication сохранение без подтверждений
Доброго времени суток, форумчане, обращаюсь к вам за помощью. Мне нужно открыть документ в ворде и сохранить его в другом формате без...

Сохранить документ Word через TWordApplication
Доброго времени суток! Есть не сложная задачка - необходимо открыть txt документ, скопировать текст в ворд, сохранить, закрыть. И так...

Конфликт компонентов TWordDocument TWordApplication с TCheckListBox
Раньше решал эту проблему путем не использования компонента TCheckListBox, но сейчас он необходим, в общем если в проекте я добавляю эти...

TWordApplication Ошибка при создании нового документа
Работаю в C++Builder 2010 & MS Office 2010 Пишу простенький генератор автоотчетов с использованием компонентов TWordApplication,...

TWordApplication - Normal.dotm и другой сеанс Word
Работаю в C++Builder 2010. Office 2010. Компоненты с вкладки OfficeXP. Свойства ConnectKind всех компонентов установлено в ckRunningOrNew. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru