Что нового

Отображение статуса выполнения скрипта.

astati

Новичок
Сообщения
145
Репутация
4
После нажатия кнопки идет выполнение скрипта.
Вначале выполняется одна задача(отправка запроса в сеть), затем выводится текстовое сообщение с кнопкой OK. после нажатие на кнопку скрипт продолжает выполнение(т.е. открывает две ссылки в GUI окне - скрытом)

Что нужно: Нужно чтобы прогрессбар до сообщения проходил один раз от 0% до 100% и после сообщения так же.
Или же вначале как-то задать 0%, а в конце скрипта 100% - ну, а где сообщение 50%
Помогите.
 

agikon

Знающий
Сообщения
789
Репутация
17
я бы сделал так.
создал бы две функции с прогрессом и одну с Msg-окошком.
запустил бы первую функцию, и в этой первой функции в конце вызвал бы функцию с Msg-окном, а в функции с Msg-окном вызвал бы вторую функцию.
 

ArtInt

Знающий
Сообщения
135
Репутация
18
astati, а зачем msg? :blink:

Просто через прогресс сделать. Лучше функцией... Или я что-то не понял? :-[
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
astati [?]
чтобы помочь, надо видеть где у тебя проблема. для чего, в свою очередь, надо видеть твой код. если кода нет, то оформи сообщение в соответствие с правилам раздела стола заказов, и я или SyDr перенесем тему.
 

AZJIO

Меценат
Меценат
Сообщения
2,894
Репутация
1,196
astati

Код:
ProgressOn("Началось", 'Выполнение супер операции', '',-1,-1,18)
; тут какой-то код. этап начало первых команд
Sleep(1000)
ProgressSet( 33, "Этап 1. Подключение к ядру")
; тут какой-то код. следующий этап выполнение каких-то команд
Sleep(1000)
ProgressSet( 66, "Этап 2. Отключение от ядра")
; тут какой-то код. следующий этап выполнение каких-то команд
Sleep(1000)
ProgressSet( 100, "Готово")
Sleep(100)
ProgressOff()
 
Автор
A

astati

Новичок
Сообщения
145
Репутация
4
Дорогие друзья извините, но код выложить не могу в целях конфеденциальности. Вот примерно мог бы написать...

AZJIO Работает на ура. щас попробую сделать не в отдельном окне А тут же на форме.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,323
astati,
Немного переделанный пример из справки к функции _Timer_SetTimer().
Код:
#include <WindowsConstants.au3>
#include <GuiConstantsEx.au3>
#include <Timers.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>

Opt('MustDeclareVars', 1)

Global $iMemo, $hStatusBar, $progress, $percent = 0, $direction = 1

_Example_CallBack()

Func _Example_CallBack()
	Local $hGUI, $iTimerProgress, $btn_change, $iWait = 10, $btn_state
	Local $aParts[3] = [75, 330, -1]

	$hGUI = GUICreate('Timers Using CallBack Function(s)', 400, 320)
	$iMemo = GUICtrlCreateEdit('', 2, 32, 396, 226, BitOR($WS_HSCROLL, $WS_VSCROLL))
	GUICtrlSetFont($iMemo, 9, 400, 0, 'Courier New')
	$btn_state = GUICtrlCreateButton('Start', 150, 265, 100, 25)
	GUICtrlSetState($btn_change, $GUI_DISABLE)
	$hStatusBar = _GUICtrlStatusBar_Create($hGUI, $aParts)
	_GUICtrlStatusBar_SetText($hStatusBar, 'Timers')
	_GUICtrlStatusBar_SetText($hStatusBar, @TAB & StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC), 2)
	_GUICtrlStatusBar_SetText($hStatusBar, @TAB & 'Здесь будет ProgressBar', 1)
	$progress = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
	_GUICtrlStatusBar_EmbedControl($hStatusBar, 1, GUICtrlGetHandle($progress))
	GUICtrlSetState($progress, $GUI_HIDE)
	GUISetState()
	_Timer_SetTimer($hGUI, 1000, '_UpdateStatusBarClock')

	While 1
		Switch GUIGetMsg()
			Case $GUI_EVENT_CLOSE
				ExitLoop
			Case $btn_state
				GUICtrlSetState($btn_state, $GUI_DISABLE)
				GUICtrlSetData($progress, 0)
				GUICtrlSetState($progress, $GUI_SHOW)
				$iTimerProgress = _Timer_SetTimer($hGUI, 1000, '_UpdateProgressBar')
				For $i = 1 To 100
					MemoWrite($i & ' Test')
					Sleep(250)
				Next
				MsgBox(64, 'Info', '100', 0, $hGUI)
				GUICtrlSetData($iMemo, '')
				For $i = 100 To 1 Step -1
					MemoWrite($i & ' Test')
					Sleep(250)
				Next
				_Timer_KillTimer($hGUI, $iTimerProgress)
				GUICtrlSetState($progress, $GUI_HIDE)
				MsgBox(64, 'Info', '1', 0, $hGUI)
				GUICtrlSetData($iMemo, '')
				GUICtrlSetState($btn_state, $GUI_ENABLE)
		EndSwitch
	WEnd
	GUIDelete()
EndFunc   ;==>_Example_CallBack

Func _UpdateStatusBarClock($hWnd, $Msg, $iIDTimer, $dwTime)
	#forceref $hWnd, $Msg, $iIDTimer, $dwTime
	_GUICtrlStatusBar_SetText($hStatusBar, @TAB & StringFormat('%02d:%02d:%02d', @HOUR, @MIN, @SEC), 2)
EndFunc   ;==>_UpdateStatusBarClock

Func _UpdateProgressBar($hWnd, $Msg, $iIDTimer, $dwTime)
	#forceref $hWnd, $Msg, $iIDTimer, $dwTime
	$percent += 5 * $direction
	GUICtrlSetData($progress, $percent)
	If $percent = 100 Or $percent = 0 Then $direction *= -1
EndFunc   ;==>_UpdateProgressBar

Func MemoWrite($sMessage)
	GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite


PS
А еще можно попробовать GIFAnimation.au3.
 
Верх