|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.09.2009, 12:54 | #1 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
Как вставлять WordArt и TextBox на "текущую" страницу?
Последовательно вставляю
изображения 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 |
10.09.2009, 17:48 | #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ой странице. Что я делаю не так? |
10.09.2009, 18:06 | #4 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Правильно, InlineShapes, а затем, когда я уже вставил их на нужную страницу, я их конвертирую в обычный Shape
Лучше день потерять — потом за пять минут долететь!©
|
10.09.2009, 18:26 | #5 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
Как добавить WordArt и/или TextBox как InlineShape?
|
10.09.2009, 18:47 | #6 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Рискну предположить, что есть метод GetInlineShape, аналогичный методу GetShape
Лучше день потерять — потом за пять минут долететь!©
|
10.09.2009, 19:08 | #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"); |
10.09.2009, 19:16 | #8 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Вот часть кода из той темы, на которую я ссылался:
Код:
Лучше день потерять — потом за пять минут долететь!©
|
10.09.2009, 19:29 | #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.09.2009, 19:43 | #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 |