- Сообщения
- 596
- Репутация
- 157
AutoIt: 3.3.0.0
Категория: Элементы GUI
Описание: Кнопка "Старт" запускает функцию, как же её остановить? Вариант решения через проверку "переменной флага", и если true то запуск функции обработки.
Код/Пример:
Файл: ZIP (AU3, EXE) 271 Kb
Автор(ы): `p r o x y
Категория: Элементы GUI
Описание: Кнопка "Старт" запускает функцию, как же её остановить? Вариант решения через проверку "переменной флага", и если true то запуск функции обработки.
Код/Пример:
Код:
Opt('GUIOnEventMode', 1)
Opt('MustDeclareVars', 1)
Opt('TrayIconDebug', 1)
Opt('TrayIconHide', 0)
#include <GUIConstantsEx.au3>
HotKeySet('{ESC}', '_Pro_Exit')
Global $hProgress, $hStartPause, $iPercent
Global $fWork=0
; $fWork = 0 - stop
; $fWork = 1 - start
GUICreate('Пример: Остановка работы функции GUI кнопкой', 345, 105)
GUISetOnEvent($GUI_EVENT_CLOSE, '_Pro_Exit')
$hProgress = GUICtrlCreateProgress(20, 20, 302, 25)
$hStartPause = GUICtrlCreateButton('Старт', 20, 60, 100, 25)
GUICtrlSetOnEvent(-1, '_StartPause')
GUICtrlCreateButton('Стоп', 20+100+2, 60, 100, 25)
GUICtrlSetOnEvent(-1, '_Stop')
GUICtrlCreateButton('Выход', 20+100*2+4, 60, 100, 25)
GUICtrlSetOnEvent(-1, '_Pro_Exit')
GUISetState()
While 1
Sleep(10)
; Если прогресс запущен (т.е. $fWork = 1), то вызвать функцию установки значения прогресса
If $fWork Then _Progress()
WEnd
Func _Pro_Exit()
Exit
EndFunc
; Запуск / пауза прогресса
Func _StartPause()
If Not $fWork Then
$fWork = 1
GUICtrlSetData($hStartPause, 'Пауза')
Return _Progress()
Else
$fWork = 0
GUICtrlSetData($hStartPause, 'Старт')
EndIf
EndFunc
; Остановка прогресса
Func _Stop()
$fWork = 0
$iPercent = 0
GUICtrlSetData($hStartPause, 'Старт')
GUICtrlSetData($hProgress, $iPercent)
EndFunc
; Установка значения прогресса
Func _Progress()
$iPercent += 1
If $iPercent > 100 Then $iPercent = 0
GUICtrlSetData($hProgress, $iPercent)
EndFunc
Автор(ы): `p r o x y