Что нового

[Элементы GUI] Пример Остановка работы функции GUI кнопкой

`p r o x y

«Улыбайтесь, господа!»
Команда форума
Глобальный модератор
Сообщения
596
Репутация
157
AutoIt: 3.3.0.0
Категория: Элементы 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
Файл: ZIP (AU3, EXE) 271 Kb
Автор(ы): `p r o x y
 
Верх