|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.12.2009, 12:25 | #1 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
Количество линий в range->ComputeStatistics
Не понимаю.
Использую range->ComputeStatistics(Word::wdStatisti cLines) для получения количества занимаемых range-ем линий. Если мой range занимает более 1ой лини - уменьшаю размер шрифта range-a, для того чтобы мой текст уместился в 1 линию. Формируемый мною документ разбит по разному на колонки(файл в прикреплении) 1ая страница - все хорошо, 2ая - нехорошо. В первой колонке ComputeStatistics всегда корректно, в остальных при видимом range-e в одну строку возвращается значение отличное от 1, к примеру 5. В прикрепленном файле где очень мелкий текст, там статистика возвращает значение линий более 1. Почему это может происходить? |
16.12.2009, 13:54 | #2 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
Набросал небольшой тест(C++)
int main() { … CComVariant width1(m_AppWord->CentimetersToPoints(4)); CComVariant width2(m_AppWord->CentimetersToPoints(3)); CComVariant spacing1(m_AppWord->CentimetersToPoints(1.0f)); CComVariant columnBreak(Word::wdColumnBreak), sectionBreak(Word::wdSectionBreakCo ntinuous); try { m_AppWord->Selection->PageSetup->LeftMargin = m_AppWord->CentimetersToPoints(2); m_AppWord->Selection->PageSetup->RightMargin = m_AppWord->CentimetersToPoints(0.5f); m_WordDocument->PageSetup->TextColumns->Add(&width1, &spacing1); m_WordDocument->PageSetup->TextColumns->Add(&width2, &spacing1); int number = 0; number = InsertText(L"first dsf asd sdf asdf d ad fad fads fadsf adsfadsf adsfasd fasdfasdfasdfasdf adf adsf adsf")->ComputeStatistics(Word::wdStatisti cLines); m_AppWord->Selection->InsertBreak(&columnBreak); number = InsertText(L"second adsfadfads d d sad fdf asdfadsf ads fadsfadsf a")->ComputeStatistics(Word::wdStatisti cLines); m_AppWord->Selection->InsertBreak(&columnBreak); … } Word::RangePtr InsertText(wchar_t *text) { long numStart = m_WordDocument->Paragraphs->Last->Range->GetEnd() - 1; numStart = max(0, numStart); m_AppWord->Selection->TypeText(text); long numEnd = m_WordDocument->Paragraphs->Last->Range->GetEnd(); numEnd = max(0, numEnd); CComVariant end(numEnd); CComVariant start(numStart); return m_WordDocument->Range(&start, &end); } После второго вызова InsertText(L"second a..) текст занимает более одной линии, number при этом не соответствует этому числу number = 1. После первого вызова, в первой колонки, текст занял 2 колонки, number = 2 - все хорошо. Почему так? Последний раз редактировалось Diego__; 16.12.2009 в 14:00. |
16.12.2009, 15:32 | #3 |
Форумчанин
Регистрация: 12.08.2009
Сообщений: 118
|
Немного наблюдений: Создал 2 колонки, вставил текст во вторую колонку, получил статистику, количество строк = 3, а реально 6. 1ая колонка в 2 раз шире 2ой, если скопировать текст со второй и вставить в 1ую текст займет 3 строки "как утверждает статистика". Данное наблюдение повторилось при различных размерах колонок и с различной длинной текста. Похоже, что количество линий определяется по размеру 1ой колонки, хотя и не факт. Может я использую ComputeStatistic не верно? Существует функция задания текущей колонки?
|
16.12.2009, 17:07 | #4 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
А как авторы объектной модели Word думали? «В обычном тексте нормально считает — ну и ладненько!»
Я пытался верстать — и мне больше понравилось использовать ячейки таблиц, а не колонки. Поэтому здесь я пас.
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
Последний раз редактировалось Sasha_Smirnov; 16.12.2009 в 17:10. |
17.12.2009, 10:09 | #5 |
Балуюсь кодами
Участник клуба
Регистрация: 09.01.2009
Сообщений: 1,837
|
Я сделал аналог на VBA.
Код:
Лучше день потерять — потом за пять минут долететь!©
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с Range | miatu | Microsoft Office Word | 6 | 07.09.2009 12:06 |
синтаксис Range ? | kievlyanin | Microsoft Office Excel | 2 | 23.04.2009 13:32 |
Range & Cells | ("")(Э_Є)("") | Microsoft Office Excel | 6 | 26.01.2009 11:19 |
количество цифр и количество символов до первой гласной буквы | 111111 | Общие вопросы C/C++ | 2 | 22.12.2008 12:15 |
MS Word: Range | kate4ka | Общие вопросы Delphi | 1 | 19.02.2008 06:14 |