![]() |
Модераторы: mihanik |
![]() ![]() ![]() |
|
kminas |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Как определить в программе Word, когда курсор перешел на вторую страницу?
|
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
При вводе текста? а зачем? страница есть понятие более чем виртуальное, и получает смысл только при форматировании для печати.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
Aloha |
|
||||||||
. ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 351 Регистрация: 14.5.2006 Репутация: 5 Всего: 165 |
kminas
У объектов Range и Selection есть свойство Information, которое возвращает информацию об этих объектах. Характер информации определяется аргументом Type. Если Type равен wdActiveEndAdjustedPageNumber или wdActiveEndPageNumber то свойство Information вернет номер страницы, содержащей конец выделения или диапазона:
Отсюда понятна разница между константами wdActiveEndAdjustedPageNumber и wdActiveEndPageNumber: если пользователь начал нумерацию страниц не с 1-й, то
|
||||||||
|
|||||||||
kminas |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Akina, а зачам тогда, например wdHeaderFooterFirstPage или wdHeaderFooterCurrentPage и т.д. Значит определяются как-то страницы?
Aloha, Спасибо, буду экспериментировать. Правда мне не нужен номер, я его знаю, он ставится автоматически, но попробую. Если что получится - опишу. |
|||
|
||||
kminas |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Aloha, самое простое сделал
Теперь надо думать, как быть дальше. Во-первых, у меня много процедур и в какую из них вставлять этот код? Во все? Или можно как-то задать глобально (очень слаб я в этом) и, во-вторых, как ее остановить? Это сообщение отредактировал(а) kminas - 15.2.2008, 21:08 |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 26 Всего: 454 |
да хрен его знает зачем. Смени верхню границу печати, поставь 10 сантиметров... или, скажем, формат с А4 на А3 поменяй (тупо сменив принтер)... с другой стороны надо же ему, ворду, чего-то рисовать - вдруг ты НЕ станешь ничего менять -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
kminas |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Akina, извини, но у меня-то получилось, как посоветовал Aloha, но?!
|
|||
|
||||
Aloha |
|
||||||||||||
. ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 351 Регистрация: 14.5.2006 Репутация: 5 Всего: 165 |
kminas
Мне кажется, лучше всего в обработчик какого-нибудь подходящего события. Глянем на объектную модель Word’a. У объекта Document событий немного: Close, New да Open. Не очень подходит для нашего случая. А вот у объекта Application есть вполне подходящее событие: WindowSelectionChange. Проблема только в том, что чтобы его заюзать нужно предпринять некоторые телодвижения, а именно – “подписаться” на это событие. Для этого нужно сделать следующее. Добавить модуль класса и назвать его, например, EventClassModule. Затем в этот модуль добавить код:
Теперь остается только инициализировать соответствующий объект. Это можно сделать так: в модуль класса ThisDocument добавить код инициализации, прикрутив его, например, к событию Document_Open:
У всего этого дела есть недостаток. Событие WindowSelectionChange наступает когда меняется выделение – либо мышкой, либо клавишами ArrowLeft, Right, Up, Down (короче - стрелками), либо клавишей Delete. Но при этом не происходит при нажатии других клавиш, включая Enter. Т.е. если юзер буде просто печатать и перейдет при этом на новую страницу – событие WindowSelectionChange не инициируется. Других, более подходящих событий в объектной модели Word’a я не углядел (у меня Word 2002).
Ну, можно, к примеру, завести глобальную переменную - флаг и в ней хранить "состояние" системы. Что-то типа Public blnMsgWasSent As Boolean (переменную нужно объявлять в обычном модуле - не модуле класса). В обработчик события App_WindowSelectionChange добавить строку
А можно классу EventClassModule добавить соответствующее свойство, и там хранить "состояние" системы. Это сообщение отредактировал(а) Aloha - 16.2.2008, 00:16 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
||||||||||||
|
|||||||||||||
kminas |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Aloha, большое спасибо, буду пробовать. Но, к сожалению, это одна из первых моих программ, и я еще не работал с модулями класса. У меня возникла одна мысль, может она конечно глупая. А можно ли эту процедуру создать в обычном модуле и вызывать ее из других процедур, хотя я не знаю как потом возвращаться в исходную процедуру.
Это сообщение отредактировал(а) kminas - 16.2.2008, 16:54 |
||||
|
|||||
kminas |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
В принципе, можно возвращаться так же, как и вызывать ее - по условию.
|
|||
|
||||
kminas |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
||||
|
||||
kminas |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 26.10.2005 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Спасибо, все ясно. Сохрани эту инфу и буду использовать, когда надо будет пользоваться VBA. Еще раз спасибо!
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Программирование, связанное с MS Office" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще!
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |