Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458

В момент отработки виндового таймера

22.05.2013, 13:27. Показов 1106. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В теме Периодически выполнять действие приводил пример использования виндового таймера.
Таймер замечательный - позволяет работать даже тогда, когда пользователь находится в режиме редактирования ячейки (т.е. вводит какие-то данные в ячейку).
Скажем так - это круче чем OnTime т.к. имеет ряд серьезных преимуществ для очень полезных задач.

Но ...
Как показало время - есть и недостатки.
1. Представьте, что пользователь начал редактировать какую-то ячейку, отрабатывает таймер и как ни в чем не бывало выводит на этот же лист данные. Первое, что происходит - он прерывается диалог процесса ввода данных пользователя. Т.е. если пользователь вводил фразу "манная каша" и ввел пока только слово "манная", то после отработки таймера и какого-то изменения какой-то другой ячейки(этим таймером) - процесс ввода прекратится и в ячейке появится "манная". Второе, что произойдет - это то, что пользователь не зная первого события (глядя только на клавиатуру) продолжит ввод данных и затрет рабочую ячейку со словом "манная" на " каша" ... а потом будет долго вам доказывать, что все делал верно.
2. Если таймер не выводит данные на лист(в отличие от п.1). Но! на некоторых компьютерах(пока по неустановленной причине) если пользователь вводит какую-то формулу (к примеру ВПР) то в процессе ее ввода в момент отработки таймера - приложение исчезает, словно его и не было. Так вот - бац и все - нет экселя! Видимо какие-то процессы, обеспечивающие проверку и работу пользователя с формулой не совместимы с работой интерпретатора. (если идет ввод не формулы - таких проблем не бывает)

Вопрос: кто может подсказать - "как определять - находится ли пользователь в процессе редактирования ячейки и с какой именно?"
ЗЫ Все события отрабатывают потом - после завершения редактирования, а вот как определить само редактирование в сам момент редактирования?
(к примеру, это позволило бы пробовать сразу выходить из функции по вызову (тика) таймера)

Добавлено через 2 часа 15 минут
Пока есть 2 варианта:
1.
Вешать 2 таймера (1 на OnTime). Его особенность в том, что в режиме работы с ячейкой OnTime не вызывается.
И так. Вешаем OnTime на каждую секунду и проверяем при вызове обычного таймера - есть ли вызов OnTim'а в прошлую секунду. Если его не было, то с БОЛЬШОЙ долей вероятности(случай сильной загрузки проца скорее всего даст исключение) идет работа с ячейкой. Если это так - виндовый таймер или выключать сразу(и включать в следующий вызов OnTime) или сразу выходить из обработчика.
2.
Слушать хуки. Как только пошла работа с окном (за исключением каких-то конкретных горячих клавиш) - пошла работа с ячейкой. Конец работы с ячейкой - событие изменения ячейки на листе. В этот период - выходим из виндового таймера.

... но ни один из этих вариантов 100% гарантии не дает. можно их совмещать конечно.
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.05.2013, 13:27
Ответы с готовыми решениями:

Не меняется title после отработки таймера
$(window).focus(function (e) { $("#message").attr('alt', "visible"); $("#message").focus(); ...

В определенный момент отработки программы мне нужно проверить существует ли на сервере определенная временная таблица
Добрый всем день!!!! У меня следующая проблема. В определенный момент отработки программы мне нужно проверить существует ли на сервере...

Как реализовать этот момент: текстовое поле для задания временного отрезка работы таймера и шага срабатывания?
Нужно продемонстрировать работу элемента ProgressBar . Для этого добавить на форму таймер , текстовое поле для задания временного отрезка...

1
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
28.05.2013, 12:29  [ТС]
Коллега с другого форума ZVI предложил 100% (уже) работающее решение:
>Состояние редактирования ячейки/формулы можно определять по свойству Enabled какой-нибудь кнопки меню, например: Файл - Создать
>Это делается так: Application.CommandBars.FindControl(ID:= 1 8) .Enabled

Спасибо.
Тема закрыта.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2013, 12:29
Помогаю со студенческими работами здесь

Аналог виндового калькулятора
Не знаю, реально ли это сделать без создания своих форм и/или библиотек, но всё же. Реально ли сделать аналог виндового калькулятора(хотя...

Запуск таски из виндового с шедулера с максимальными правами
Всем доброго времени суток. Возникла следующая проблема. Есть cmd-файл на виндовом сервере, который запускает процесс загрузки...

Найти момент инерции I и момент импульса земного шара относительно оси вращения
Найти момент инерции I и момент импульса земного шара относительно оси вращения.Масса Земли равна m=6*10^24 кг,радиус Земли считать равным...

Определить момент силы торможения, если момент инерции маховика равен 1кг/м^2
маховик делал 10 оборотов в секунду,при торможении он остановился,сделав 30 оборотов от начало торможения до остановки Определить момент...

Каков вращающий момент, действующий на маховик, если момент сил трения в подшипниках 0,2 Нм
Маховик, имеющий форму диска, массой 35кг и диаметром 60 см через 3 с после включения мотора приобретает угловую скорость 480 об/мин. Каков...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru