|
Модераторы: diadiavova, gambit |
|
ProgramerForever |
|
|||
Опытный Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: нет Всего: 5 |
Добрый день, уважаемые участники форума.
Подскажите, как определать номер страницы найденного текста, в RichTextBox? Везде говорится про номер строки и метод .GetLineFromCharIndex(position)
|
|||
|
||||
diadiavova |
|
|||
Доктор Зло(диагност, настоящий, с лицензией и полномочиями) Профиль Группа: Модератор Сообщений: 5820 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Возможно есть смысл подсчитать в тексте символы Page break.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
ProgramerForever |
|
|||
Опытный Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: нет Всего: 5 |
Для перехода на новую строку в rtf используется \page . В моём документе этого нет. Видимо текст сплошняком идёт, а при открытии в Word он сам разбивает на страницы.
Пару костылей приходят в голову, но хочется более красивого решения 1) Взять текст, сделать split по \n, суммировать длины получившихся строк, деленных на 80, результат разделить на 45. (45 строк, 80 символов в строке) 2) Загрузить в Word, и там попытаться получить номер страницы. Уверен что в Word это сделать проще. Пример файла в аттаче Присоединённый файл ( Кол-во скачиваний: 2 ) КОНВЕНЦИЯ_о_ядерной_безопасности.rtf 185,01 Kb |
|||
|
||||
diadiavova |
|
||||||
Доктор Зло(диагност, настоящий, с лицензией и полномочиями) Профиль Группа: Модератор Сообщений: 5820 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
Тогда уж проще умножить 45 на 80, получить количество символов на странице и разбить документ на блоки такого размера, только что-то мне подсказывает, что это даст неверный результат. Хотя, если учитывать границы слов и тому подобные вещи, то почему бы и не попробовать.
Ну в ворде номер текущей страницы отображается в строке состояния, а если надо программно получить номер страницы, на которой находится курсор или выделение, то можно сделать так
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
||||||
|
|||||||
ProgramerForever |
|
|||
Опытный Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: нет Всего: 5 |
Понятно что точность подобных методов плюс-минус лапоть, потому и говорю, что костыль. Нужно это всё для поиска по документам. Программа ищет текст в документах и выдаёт результат: что найдено, в каком документе, на какой странице.
|
|||
|
||||
diadiavova |
|
|||
Доктор Зло(диагност, настоящий, с лицензией и полномочиями) Профиль Группа: Модератор Сообщений: 5820 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
ProgramerForever, тут вопрос в том, по какому принципу нужно делить документ на страницы. Так как это делает ворд? Тогда вопрос в том, какие настройки использовать, ведь ворд делает это для печати и тому подобных вещей. Если есть возможность загрузить все в ворд, то там можно найти логические разрывы страниц, например так
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
ProgramerForever |
|
|||
Опытный Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: нет Всего: 5 |
Спасибо. я опробую этот вариант. Всё равно некоторый препроцессинг делается с файлами (переводится в rtf, он быстрее и надёжнее грузится), там и это можно добавить.
|
|||
|
||||
ProgramerForever |
|
|||
Опытный Профиль Группа: Участник Сообщений: 554 Регистрация: 15.11.2006 Где: Новосибирск Репутация: нет Всего: 5 |
Попробовал такой метод. Не получилось, т.к. в исходном документе нет разрывов страниц, Word их тоже не видит. Открыл в Word вручную и пробовал заменить "^m" на свой текст. Результат - Произведено 0 замен.
|
|||
|
||||
diadiavova |
|
|||
Доктор Зло(диагност, настоящий, с лицензией и полномочиями) Профиль Группа: Модератор Сообщений: 5820 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 8 Всего: 142 |
ProgramerForever, ну я там говорил не об использовании функции замены, а о выполнении приведенного кода в макросе. Но сейчас снова попробовал этот код и что-то он не работает, хотя в тот раз работал. Странно. Наверно надо этот вопрос задавать в разделе, посвященном VBA, там лучше знают как это сделать. Могу перенести тему туда, если хочешь.
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит |
|||
|
||||
Правила форума VB .NET | |
|
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |