Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Как узнать положение текста, куда планируется его


Автор: Diego1 3.12.2009, 19:16
Создал новый документ, задал маргины 

Код

Word::SectionPtr lastSection = m_WordDocument->Sections->GetLast();
    
lastSection->PageSetup->BottomMargin = m_AppWord->CentimetersToPoints(1);
lastSection->PageSetup->TopMargin = m_AppWord->CentimetersToPoints(1);
lastSection->PageSetup->LeftMargin = m_AppWord->CentimetersToPoints(1);
lastSection->PageSetup->RightMargin = m_AppWord->CentimetersToPoints(10);


Дальше, в цикле вставляю текст

Код

Word::ParagraphPtr paragraph = m_WordDocument->GetParagraphs()->GetLast();
paragraph->PutSpaceBefore(spaceBefore);

Word::RangePtr range = paragraph->GetRange();
range->InsertAfter(text);    

Word::_FontPtr font = range->GetFont();
font->PutName(fontName);
font->PutSize(fontSize);
font->PutColor(Word::WdColor(color));


Как на i-ой итерации цикла узнать в какую точку документа будет вставлен текст? При этом устанавливая маргины станицы, спейсинги и индеты параграфам.

Можно ли узнать размер вводимого текста? Если у нас есть текст в заранее не известного размера, после вставки его на страницу, существует возможность узнать его параметры (например: описывающий прямоугольник)? smile 

Автор: ViterAlex 3.12.2009, 19:54
Положение текста в документе определяется  по его удалённости от начала документа. У Range есть свойства Start и End, которые возвращают номер символа в документе с которого Range начинается и которым заканчивается.
Судя по твоему коду, ты вставляешь текст в последний абзац, т.е точка вставки всегда Document.Paragraphs.Last.Range.End.

Автор: Diego1 4.12.2009, 12:34
Существует возможность из Document.Paragraphs.Last.Range.End. получить точку (смещение в сантиметрах от начала страницы)?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)