Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как поймать событие изменения документа Word? 
:(
    Опции темы
artdev
Дата 19.3.2010, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 3.9.2009

Репутация: 1
Всего: 1



Задача: необходимо контролировать количество символов в тексте документа, а в случае превышения некоторого максимального значения выделять цветом "лишние" символы.
Собственно сама проверка и выделение цветом проблем не вызывают. Главный вопрос, каким образом оперативно отслеживать изменения в документе и вызывать проверку.

Вариант 1. Запускать проверку периодически через некоторые интервалы времени. Недостатки: бесконечный цикл с проверкой условия даже при отсутствии изменений в документе.
Вариант 2. Отслеживать события нажатия клавиш (набор и удаление символов) и левой кнопки мыши (вставка текста посредством контекстного меню или кнопки на панели инструментов).
Код

Sub HandleEvents()
  Dim m As MSG
  
  bCancel = False
  Do While Not bCancel
    WaitMessage
    If PeekMessage(m, GetActiveWindow, 0, 0, PM_NOREMOVE) Then
      Select Case m.Message
      Case WM_KEYUP, WM_LBUTTONUP
        UpdateInfo
      End Select
    End If
    DoEvents
  Loop
End Sub

Sub AutoOpen()
  HandleEvents
End Sub

Недостатки варианта 2: 1) некоторые изменения становятся видны только после дополнительного клика мышью или нажатия клавиши; 2) при открытии документа в Word 2003 SP3 иконки стандартных панелей инструментов не видны до первого клика (см. приложенный скриншот).

Может, есть решение лучше? Подходящих событий объектной модели Word я не нашел.
Событие WindowSelectionChange не подходит, так как не происходит:
1) при наборе текста с клавиатуры, хотя курсор перемещается вправо;
2) при удалении символов клавишей BackSpace.

Присоединённый файл ( Кол-во скачиваний: 2 )
Присоединённый файл  dead_toolbars.png 5,31 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.