:: Visual Foxpro, Foxpro for DOS
Контроль неактивности оператора (+)
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
Доброго дня уважаемые Знатоки!

Подскажите пожалуста (или намекните),
как получить данные о неактивности в запущенной форме.

(Т.е. фокус не получал ни один элемент, кнопки не нажимались
какое-то время (скажем 15 минут))

Смысл чтобы закрывать форму (программу)
через некоторое время неактивности ...
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
ssa

Сообщений: 13007
Откуда: Москва
Дата регистрации: 23.03.2005
Для этого настраивают таймеры неактивности в операционной системе, а не делают закат солнца вручную.


------------------
Лень - это неосознанная мудрость.
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
У ТСа, наверное, стоит задача "выгнать" всех из проги, что бы обновить ехе-шник.

PS вот юзер сильно обрадуется, когда он полдня набивал данные, вышел покурить, а прога закрылась


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
DmitryKn

Сообщений: 300
Дата регистрации: 06.04.2022
ssa
Для этого настраивают таймеры неактивности в операционной системе, а не делают закат солнца вручную.

Ну вот юзер набивал полдня данные, устал, ушел на порносайт и залип.
Ratings: 0 negative/1 positive
Re: Контроль неактивности оператора (+)
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
Это вопрос тактики и стратегии ...
Пользователей около пятисот
можно конечно обойтись и без "прибирания за пользователями",
но такой механизм решил бы многие нюансы ...
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Какая задача решается? Почему надо закрывать форму в приложении?


------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
_vit

Сообщений: 5175
Дата регистрации: 29.07.2002
Кладешь на форму таймер.
Присваиваешь свойству Interval время неактивности которое должно вызвать необходимое тебе действие в миллисекундах.
Во всех событиях которые характеризуют активность пользователя на форме (keypress, click) вызываешь Reset таймера.
В событии Timer делаешь необходимые при длительной неактивности пользователя действия (закрываешь форму, программу, выключаешь компьютер, звонишь в МЧС )

Пока пользователь что-то делает - кликает, клацает, таймер сбрасывается не давая истечь времени до события Timer.
Как только пользователь зазевался - вот тебе на. Время истекает и Timer срабатывает.



Исправлено 2 раз(а). Последнее : _vit, 18.04.23 21:25
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Все так (приделывайте таймер на все формы... хотя там не просто, некоторые формы работают сутками, и это запрограммированное их право и назначение)

Далее, модерновая (забыл признак, забываю термины, а, модальную... в ней таймер работает?...) форма, типа да/нет, она не вырубается таймером (кстати, какое событие, сигнал, должен издать таймер чтобы убить саму форму

Доб > Пока пользователь что-то делает - кликает, клацает, таймер сбрасывается не давая истечь времени до события Timer.
Как только пользователь зазевался - вот тебе на. Время истекает и Timer срабатывает.

Где размещать таймер, и какие команды в нем исполнять ... (программирование обычное)

Доб2. Из тех возможностей (обработчиков событий) какие есть



Исправлено 2 раз(а). Последнее : of63, 18.04.23 21:56
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
Большое Спасибо!
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
Большое Спасибо!
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
novik
Автор

Сообщений: 75
Дата регистрации: 30.10.2009
Поиск и просмотр многочисленных документов привязанных к персонам (сканированных как правило) ...
Форму закрывать в общем для получения реальной статистики работы пользователей ...
(Потому сильно не принципиально ...)
Вход в форму, выход - пишут в журнал время входа - время выхода и логин доменной учётки ...
===================================
Извиняюсь за вопрос ... уже разобрался ...

===================
С уважением!
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
of63

Сообщений: 25244
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
() вот так взял, и "разобрался", а я - нет )
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
Vedmak

Сообщений: 5967
Откуда: CiTY
Дата регистрации: 30.10.2003
Тут вопрос надо начать с темы для чего нужно контролировать активность приложения.

В начале мне было актуально пинговать SQL-сервер в случае если пользователь пошел за кофем в соседний город. SQL-сервер закрывает "спящие" коннекты не сообщая об это клиенту.

присоединяю базовый agent_class

В разработке проекта тот класс получил наследника для "передергивания" списков на форме и прочего подобного.

В файле наследник для закрытия приложения если пользователь не закрыл его после установленного конца рабочего дня. В терминальных сессиях это актуально для регулярного обновления EXE.


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
Vedmak

Сообщений: 5967
Откуда: CiTY
Дата регистрации: 30.10.2003
PUBLIC goUserInfo, goAutoclose, goUpdateMessage

IF goSet.get( set_update_enabled ) = logical_on AND goApp.terminal_mode = logical_off
	goUpdate = CREATEOBJECT('agent_update_class')
	
	IF goSet.get( set_update_check_boot ) = logical_on
		goUpdate.check()
	ENDIF 

	goUpdate.start()
ENDIF 

IF goSet.get( set_autoclose_enabled ) = logical_on AND goApp.dev_autoclose <> logical_no
	goAutoclose = CREATEOBJECT('agent_autoclose_class')
	goAutoClose.start()
ENDIF

Так у меня приложение создает объекты (Agent_class) которые проверяют наличие новых версий EXE и необходимость закрывать приложение в установленное время.


------------------
Говорить стоит лишь для тех, кто слушает.
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
andrewk

Сообщений: 174
Откуда: Красноярск
Дата регистрации: 15.05.2005
Vedmak
Вложения:
Просто к слову. Учитывая, что в коде везде VARTYPE() без второго параметра, то последующая проверка на ISNULL() везде лишняя.
А ещё, если к моменту Init-а в текущей рабочей области будет курсор, в котором есть поле NewId, то случится странность, особенно если это поле не символьное)) (оказалось, про это в соседней ветке уже есть: forum.foxclub.ru)



Исправлено 1 раз(а). Последнее : andrewk, 10.05.23 21:53
Ratings: 0 negative/0 positive
Re: Контроль неактивности оператора (+)
Vedmak

Сообщений: 5967
Откуда: CiTY
Дата регистрации: 30.10.2003
andrewk
Просто к слову. Учитывая, что в коде везде VARTYPE() без второго параметра, то последующая проверка на ISNULL() везде лишняя.

Обдумаю.

andrewk
А ещё, если к моменту Init-а в текущей рабочей области будет курсор, в котором есть поле NewId, то случится странность, особенно если это поле не символьное)) (оказалось, про это в соседней ветке уже есть: forum.foxclub.ru)

Для разделения значения полей и переменных имеющих одинаковое названия я предпочитаю немного другой стиль. Я забираю запись из курсора в объект через SCATTER NAME to loA. Зачастую такой объект у меня протягивается через несколько методов,процедур и функций. Заранее не знаю где какое поле записи(объекта) будут востребовано.

По этому у мена gcA / lcA переменные, а к полям записи я обращаюсь через объект loA.<field_name>.

В целом цель одна: разделить гречку и просо. Просто методы разные: отделить гречку от проса или просо от гречки. Это образно.

P.S. Хотя в REPLACE обращение к m. уместна. Но я стараюсь избегать симметрии в названиях полей и переменных. Но это другая история.


------------------
Говорить стоит лишь для тех, кто слушает.




Исправлено 1 раз(а). Последнее : Vedmak, 13.06.23 19:33
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 (Гостей: 28)

© 2000-2024 Fox Club 
Яндекс.Метрика