|
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
|
|
| 22.05.2013, 13:27 | |
|
Ответы с готовыми решениями:
1
Не меняется title после отработки таймера В определенный момент отработки программы мне нужно проверить существует ли на сервере определенная временная таблица Как реализовать этот момент: текстовое поле для задания временного отрезка работы таймера и шага срабатывания? |
|
1069 / 107 / 4
Регистрация: 19.12.2012
Сообщений: 458
|
|
| 28.05.2013, 12:29 [ТС] | |
|
Коллега с другого форума ZVI предложил 100% (уже) работающее решение:
>Состояние редактирования ячейки/формулы можно определять по свойству Enabled какой-нибудь кнопки меню, например: Файл - Создать >Это делается так: Application.CommandBars.FindControl(ID:= 1 8) .Enabled Спасибо. Тема закрыта.
2
|
|
| 28.05.2013, 12:29 | |
|
Помогаю со студенческими работами здесь
2
Запуск таски из виндового с шедулера с максимальными правами
Определить момент силы торможения, если момент инерции маховика равен 1кг/м^2 Каков вращающий момент, действующий на маховик, если момент сил трения в подшипниках 0,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. Пошагово создадим проект для загрузки изображения. . .
|