|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Таймер на Input |
|
[решено] Таймер на Input
|
![]() Ветеран Сообщения: 553 |
Вобщем нужно если из Input удалили все символы, то через 5 секунд там появилась цифра 0
Если вписали данные то 0 удаляется . Я начал писать но почемуто неработает ... пол ночи просидел всю голову сломал. Один из вариантов: #include <Date.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $sNewDate $Form1 = GUICreate("Form1", 265, 42, -1, -1) $Input1 = GUICtrlCreateInput("Input1", 8, 8, 241, 21) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $nMsg = 1 If GUICtrlRead($Input1) = "" Then $sNewDate = Round (StringRight(_DateAdd('s',5, _NowCalc()), 2) ) If Round(@SEC) = $sNewDate Then GUICtrlSetData($Input1, "0") EndSwitch WEnd |
|
Отправлено: 05:40, 31-05-2009 |
![]() Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать #include <Date.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> Global $sNewDate = "No" $Form1 = GUICreate("Form1", 265, 42, -1, -1) $Input1 = GUICtrlCreateInput("Input1", 8, 8, 241, 21) GUISetState(@SW_SHOW) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch If GUICtrlRead($Input1) = "" And $sNewDate = "No" Then $sNewDate = Mod(@SEC + 5, 60) If @SEC = $sNewDate Then GUICtrlSetData($Input1, "0") $sNewDate = "No" EndIf WEnd |
------- Отправлено: 10:02, 31-05-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Лучше использовать WM_COMMAND в этом случае:
#include <GUIConstantsEx.au3> #include <EditConstants.au3> #include <WindowsConstants.au3> ; Global $iTimer = -1 $Form1 = GUICreate("Form1", 265, 42, -1, -1) $Input1 = GUICtrlCreateInput("Input1", 8, 8, 241, 21) GUISetState(@SW_SHOW) GUIRegisterMsg($WM_COMMAND, "WM_COMMAND") While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch If $iTimer <> -1 And TimerDiff($iTimer) >= 5000 Then GUICtrlSetData($Input1, "0") $iTimer = -1 EndIf WEnd Func WM_COMMAND($hWnd, $msg, $wParam, $lParam) Local $nNotifyCode = BitShift($wParam, 16) Local $nID = BitAND($wParam, 0xFFFF) Local $hCtrl = $lParam Switch $nID Case $Input1 Switch $nNotifyCode Case $EN_CHANGE, $EN_UPDATE ; Edit (Input) control has been changed Local $sInput_Data = GUICtrlRead($Input1) If $sInput_Data = "" Then $iTimer = TimerInit() Else $iTimer = -1 EndIf EndSwitch EndSwitch Return $GUI_RUNDEFMSG EndFunc Неплохо придумано с секундами, я не думал что так таймер можно построить ![]() P.S Но в твоём примере, если при ожидании 5-ти секунд юзер вводит данные в поле, то они заменяются на 0 в любом случае. |
------- Отправлено: 11:59, 31-05-2009 | #3 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
![]() |
|
Отправлено: 12:29, 31-05-2009 | #4 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Вот никак непойму зачем переменную $sNewDate каждый раз обNoулять ??
Если не обнулять то неработает ... ![]() |
|
Отправлено: 13:38, 31-05-2009 | #5 |
![]() Старожил Сообщения: 215
|
Профиль | Отправить PM | Цитировать Цитата FlatX007:
![]() Просто я сначала пишу. Потом думаю. Я не проверяю, ввёл ли кто-то что-нибудь в поле после того, как там появилось "" Цитата FlatX007:
Правда если в эту секунду скрипт на паузе (MsgBox, InputBox и т.д.) - нифига не сбросится. Потому что не проверится. Кста, если не секрет, для чего это используется? Вот чуток исправленный вариант. |
|||
Отправлено: 16:35, 31-05-2009 | #6 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Это для этого ...
Это вообще для понта сделано ![]() |
Последний раз редактировалось FlatX007, 27-06-2009 в 23:52. Отправлено: 16:59, 31-05-2009 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата FlatX007:
P.S Да и вообще подобные поля лучше обрамлять элементом UpDown, и задать лимит (мин.) в 0. |
|
------- Отправлено: 17:06, 31-05-2009 | #8 |
![]() Ветеран Сообщения: 553
|
Профиль | Отправить PM | Цитировать Проверка полей работает только при открытом меню настройки ... во время работы программы этого непроисходит.
Цитата Creat0R:
|
|
Отправлено: 17:16, 31-05-2009 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] таймер | firstarey | Скриптовые языки администрирования Windows | 11 | 04-03-2022 16:54 | |
Загрузка - [решено] Как отключить таймер перед проверкой дисков в WinXP? | GSA_GSA | Microsoft Windows 2000/XP | 1 | 24-06-2009 11:41 | |
[решено] Genius G-Pen F610 + DirectX Input + Игры | Pitbull | Непонятные проблемы с Железом | 4 | 07-04-2009 21:09 | |
EOF input[1] равняется началу input[2] | FADE | Вебмастеру | 6 | 30-06-2004 18:44 | |
таймер | Guest | Вебмастеру | 1 | 05-02-2004 23:58 |
|