On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение





Пост N: 176
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 18.09.25 04:59. Заголовок: Achoice() Dbedit() - таймер ожидания




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 12 [только новые]







Пост N: 177
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 18.09.25 05:03. Заголовок: Добрый день, коллеги..


Добрый день, коллеги. Возникла необходимость поставить таймер ожидания. Если Пользователь не работает сделать штатный выход из программы.
Как передать параметр в пользовательскую функцию... или сделать выход по таймеру.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 8043
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.09.25 08:29. Заголовок: Oskar_AAA пишет: Ес..


Oskar_AAA пишет:

 цитата:
Если Пользователь не работает


Поясните это ?
Не работает за программой 5, 10 минут, 1 час ?
А вдруг юзер отложил просто программу и занят другой работой на компе, это считается ?
А запуск отчетов, если долго считаются - тогда таймер нужно отключать ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 178
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 18.09.25 09:03. Заголовок: Если Пользователь не..


Если Пользователь не работает с программой 5,10,30 итд минут. Это в диалоговых режимах (выбор отчета в меню и/или просмотр отчета итд). Если выбран отчет - то формируется отчет и не важно сколько времени уйдет на его формирование.
То есть нужно "засунуть" INKEY(60) в Пользовательскую функцию Achice() b Dbedit().

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 179
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 18.09.25 09:18. Заголовок: Пользователь отложил..


Пользователь отложил работу с программой, занят другими делами итд. А программа (диалоговый режим) просто ждет нажатия клавиши из спсика допустимых (Enter - выбор, Esc - выход итд....)
то есть если нет нажатия клавиши из списка допустимых, то выход из этого меню (или программы с закрытием открытых файлов БД, то есть QUIT)

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 8044
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.09.25 09:33. Заголовок: Тоже с этим мучаюсь ..


Тоже с этим мучаюсь - https://clipper.borda.ru/?1-3-0-00000702-000-0-0#002.002.001
Но у тебя попроще. У меня примерно такое есть в терминалке на хХарборе.
Но у меня если 5 минут нет реакции пользователя, то программа начинает играть в квадратики - режим ожидания.
Везде где в проге ожидание ставлю:
      LK := Inkey( 10, INKEY_ALL ) 
lKeyMouse := MLEFTDOWN()
IF lKeyMouse
... здесь проверка нажатых координат
ENDIF
IF LK == 0
cCol7 := SetColor()
IF M->SetScreen == .T.
nTime2 := Seconds()
nSeconds := Int( nTime2 - nTime1 )
IF M->SetTimeScr < nSeconds
SHUFFLE() //------------- SCREEN SAVER --------//
nSeconds := 0
nTime1 := Seconds()
ENDIF
ENDIF
SetColor( cCol7 )
ELSE
nTime1 := Seconds()
ENDIF
DO CASE
CASE LK == K_ALT_A
...
CASE LK == K_TAB .OR. LK == K_RIGHT .OR. LK == K_DOWN
... и т.д.


Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 180
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 18.09.25 09:49. Заголовок: Там где ожидание чер..


Там где ожидание через INKEY() там все понятно... а в Achoice() Dbedit() этого нет... эти функции бесконечно ждут пользователя... а он забыл итд....

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 8045
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.09.25 10:44. Заголовок: Oskar_AAA пишет: а ..


Oskar_AAA пишет:

 цитата:
а в Achoice() Dbedit() этого нет


Глянул свои исходники, я их переделал на TBrowseDB()

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 369
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 18.09.25 11:15. Заголовок: Oskar_AAA пишет: Ес..


Oskar_AAA пишет:

 цитата:
Если Пользователь не работает с программой 5,10,30 итд минут. Это в диалоговых режимах (выбор отчета в меню и/или просмотр отчета итд). Если выбран отчет - то формируется отчет и не важно сколько времени уйдет на его формирование.
То есть нужно "засунуть" INKEY(60) в Пользовательскую функцию Achice() b Dbedit().



У меня запущен поток, где есть общая переменная с основным потоком, которая задает таймер простоя, в потоке она минусуется каждый период времени, когда дойдет до нуля
программа завершает работу, нажатия клавиш или мышки, или при построении длительных отчетов устанавливает таймер на начало отсчета.
Можно так же использовать состояние IDLE для этого
В Achoice можно вроде и в функции обрабатывать это

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 181
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 18.09.25 11:49. Заголовок: В Achoice можно врод..


В Achoice можно вроде и в функции обрабатывать это - просмотрел, нет такого параметра, если только в функцию пользователя INKEY() не проставить...

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 370
Зарегистрирован: 05.10.06
ссылка на сообщение  Отправлено: 18.09.25 17:01. Заголовок: Oskar_AAA пишет: В ..


Oskar_AAA пишет:

 цитата:
В Achoice можно вроде и в функции обрабатывать это - просмотрел, нет такого параметра, если только в функцию пользователя INKEY() не проставить...



на сколько помню, функция постоянно опрашивается, следовательно можно в ней организовать таймер простоя, используя либо static переменную в функции либо внешнюю private/public. при первом вызове инициализируете ее в seconds() и проверяете когда временной промежуток составит необходимую вам разницу, затем организуете процедуру выхода

глянул и в DbEdit() есть в функции состояние - DE_IDLE 0 Idle, тоже наверное работает по тому же принципу...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 8132
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.09.25 19:06. Заголовок: Oskar_AAA hb_gtInfo..


Oskar_AAA
hb_gtInfo(HB_GTI_INKEYFILTER, {|nk| aadd(aDownKeys,nk)})
В функции что поселишь в FT_OnTick можно отслеживать и время и нажатия
из массива aDownKeys
Это как вариант , дальше сам

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 182
Зарегистрирован: 09.09.11
ссылка на сообщение  Отправлено: 18.09.25 19:45. Заголовок: Коллеги, спасибо за ..


Коллеги, спасибо за советы. Программа на xHarbour 1.2.3 Intl. (SimpLex) (Build 20201212). Не указал в начале темы...
Будем ковырять дальше....

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 217
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет