![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
![]()
Последовательно вставляю
изображения m_Document->Paragraphs->Last->Range->GetInlineShapes()->AddPicture(imagePath.GetString() ); Word::ShapePtr shapePtr = inlineShape->ConvertToShape(); shapePtr->WrapFormat->Type = Word::wdWrapBehind; ... текстовые блоки Word::ShapePtr textBox = m_Document->GetShapes()->AddTextbox(Office::msoTextOrientat ionHorizontal, ...); textBox->WrapFormat->Type = Word::wdWrapFront; ... textBox->GetTextFrame()->GetTextRange()->InsertAfter(L"privet"); объекты WordArt Word::ShapePtr wordArt = m_Document->GetShapes()->AddTextEffect(Office::msoTextEffec t1, ...); wordArt->WrapFormat->Type = Word::wdWrapFront; ... обычный текст m_Document->GetParagraphs()->GetLast()->GetRange()->InsertAfter(L"privet"); ... ставлю break CComVariant m_PageBreak(Word::wdSectionBreakNex tPage); m_WordDocument->GetParagraphs()->GetLast()->GetRange()->InsertBreak(&m_PageBreak); еще раз повторно все вставляю. Все текстовые блоки и WordArt вставляются только на первую страницу, обычный текст и изображения - на следующую (нормально). Как сделать, чтобы после break-a текстовые блоки и WordArt вставлялись на текущую страницу, а не на первую? Можно ли этого добиться без использования Selection-a? очень не хочется использовать selection |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
![]()
В данной теме Вы приводите пример вставки изображений. Они вставляются в Range через InlineShapes.AddPicture(...). У меня не получается добавить Shape-ы: TextBox и WordArt. Мне известны только 2 метода, как это сделать
m_Document->GetShapes()->AddTextEffect m_Document->GetShapes()->AddTextbox у Range-a я не нашел ничего похожего. Попробовал после m_WordDocument->GetParagraphs()->GetLast()->GetRange()->InsertBreak(&m_PageBreak); вставить CComVariant toPage(Word::wdGoToPage); CComVariant toNext(Word::wdGoToNext); m_WordDocument->GetParagraphs()->GetLast()->GetRange()->GoTo(&toPage, &toNext); результат не радует - все текстовые блоки и WordArt на 1ой странице. Что я делаю не так? |
![]() |
![]() |
![]() |
#4 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Правильно, InlineShapes, а затем, когда я уже вставил их на нужную страницу, я их конвертирую в обычный Shape
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
![]()
Как добавить WordArt и/или TextBox как InlineShape?
|
![]() |
![]() |
![]() |
#6 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Рискну предположить, что есть метод GetInlineShape, аналогичный методу GetShape
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 26.08.2009
Сообщений: 22
|
![]()
У range есть метод GetInlineShapes(), GetShapes() метода у range нету.
Пробовал добавлять textBox через InlineShapes, не получилось. Word::InlineShapePtr inlineShape = m_WordDocument->GetParagraphs()->GetLast()->GetRange()->GetInlineShapes()->AddPicture(L"C:\\1.jpg", &CComVariant(FALSE), &CComVariant(TRUE)); Word::ShapePtr shape = inlineShape->ConvertToShape(); shape->TextFrame->TextRange->InsertAfter(L"sdf"); |
![]() |
![]() |
![]() |
#8 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
![]()
Вот часть кода из той темы, на которую я ссылался:
Код:
Лучше день потерять — потом за пять минут долететь!©
|
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 26.08.2009
Сообщений: 22
|
![]()
Вот так пробую:
CComVariant pageBreak(Word::wdSectionBreakNextP age); Word::RangePtr range = m_WordDocument->Range(); range->InsertParagraphAfter(); range->InsertBreak(&pageBreak); range->GoTo(&CComVariant(Word::wdGoToPage ), &CComVariant(Word::wdGoToAbsolut e), &CComVariant(2)); Word::ShapePtr textBox = m_WordDocument->Shapes->AddTextbox(Office::msoTextOrientat ionHorizontal, m_AppWord->CentimetersToPoints(10), m_AppWord->CentimetersToPoints(5), 100, 100, &CComVariant(range)); Вылетает при вставке текс бокса. Там последний параметр VARIANT* Anchor. Может неправильно передаю? |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 26.08.2009
Сообщений: 22
|
![]()
Все проблема решена. Вот код:
CComVariant pageBreak(Word::wdSectionBreakNextP age); Word::RangePtr range = m_WordDocument->Range(); range->InsertParagraphAfter(); range->InsertBreak(&pageBreak); VARIANT anchor; anchor.vt=VT_DISPATCH; anchor.pdispVal=range; Word::ShapePtr textBox = m_WordDocument->Shapes->AddTextbox(Office::msoTextOrientat ionHorizontal, m_AppWord->CentimetersToPoints(10), m_AppWord->CentimetersToPoints(5), 100, 100, &anchor); |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Паскаль. 2 задачи (Программа "Верификация","КАК БРИГАДИРУ РАЗДЕЛИТЬ ЗАРОБОТАННЫЕ ДЕНЬГИ") | Valik102 | Помощь студентам | 3 | 20.05.2009 20:42 |
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" | MAcK | Компоненты Delphi | 11 | 24.10.2007 10:49 |
Webbrowser и "Невозможно отобразить страницу" | celovec | Работа с сетью в Delphi | 1 | 06.07.2007 13:45 |