Что нового

[Элементы GUI] последовательный вывод действий в окно

BrAWo

Новичок
Сообщения
15
Репутация
1
помогите туплю прям сильно

нужно по ходу работы выводить сообщения в окно после очередного действия
скрипт с логикой работы :smile: хотя и бредовый
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("backup", 633, 454)
$Label1 = GUICtrlCreateLabel("Резервное копирование всех баз...", 25, 16, 400, 29)
GUICtrlSetFont(-1, 16, 800, 0, "Tahoma")

$Label2 = GUICtrlCreateLabel("[x] Резервное копирование базы: Торговля...", 25, 64, 400, 20)
GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")

RunWait (@ProgramFilesDir & "\1cv81\bin\1cv8.exe ....")

if FileExists ("d:\backup\file.dt") Then

	$Label3 = GUICtrlCreateLabel("[x] Резервное копирование базы: Торговля успешно завершено", 25, 85, 400, 20)
	GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
	GUICtrlSetColor(-1, 0x008000)
Else

	$Label4 = GUICtrlCreateLabel("[x] Резервное копирование базы: Торговля завершено с ошибкой", 25, 104, 600, 20)
	GUICtrlSetFont(-1, 10, 800, 0, "Tahoma")
	GUICtrlSetColor(-1, 0xFF0000)

EndIf

GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
WEnd


другими словами:
1 начало работы

2 написали что делаем
3 запуск того что делаем
4 если сделалось то пишем что все хорошо, иначе пишем что плохо

5 написали что делаем №2
6 запуск того что делаем №2
7 если сделалось то пишем что все хорошо, иначе пишем что плохо №2
....
 

SET777

Новичок
Сообщения
51
Репутация
3
BrAWo
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("backup", 633, 454)
$Label1 = GUICtrlCreateLabel("Резервное копирование всех баз...", 25, 16, 400, 29)
GUICtrlSetFont(-1, 16, 800, 0, "Tahoma")

$Label2 = GUICtrlCreateLabel("[x] Резервное копирование базы: 1 ...", 25, 64, 400, 20)

$Label3 = GUICtrlCreateLabel("", 40, 85, 400, 20)

$Label4 = GUICtrlCreateLabel("[x] Резервное копирование базы: 2 ...", 25, 154, 600, 20)
GUICtrlSetState ($Label4,$GUI_HIDE)
$Label5 = GUICtrlCreateLabel("", 40, 170, 700, 20)

GUISetState()

Sleep(2000)
If DirCopy("C:\Program Fi6les\1cv81\AddDoc", "d:\backup", 1) Then
	GUICtrlSetData($Label3, "Скопировано")
	GUICtrlSetState ($Label4,$GUI_SHOW)
Else
	GUICtrlSetData($Label3, "Ошибка при копировании")
	GUICtrlSetState ($Label4,$GUI_SHOW)

EndIf

Sleep(2000)

If DirCopy("C:\Program Files\1cv81\readme", "d:\backup", 1) Then
	GUICtrlSetData($Label5, "Скопировано")
Else
	GUICtrlSetData($Label5, "Ошибка при копировании")
EndIf


В случае обработки большого количества данных можно использовать этот пример:
Код:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>

Global $sMessage

$Form1 = GUICreate("backup", 633, 454)
$Label1 = GUICtrlCreateLabel("Резервное копирование всех баз...", 25, 16, 400, 29)
GUICtrlSetFont(-1, 16, 800, 0, "Tahoma")
$myedit = GUICtrlCreateEdit("", 10, 50, 600, 390, $ES_READONLY + $ES_AUTOVSCROLL + $WS_VSCROLL)

GUISetState()

; пример с циклом

For $i = 1 To 20
	WriteData("Копирую..." & $i)

	; какие то действия например: $result = DirCopy("C:\Program Files\_1cv81\AddDoc", "d:\backup", 1)
	$result = True ; имитация возвращаемого значения действия
	Sleep(300) ; имитация задержки действия

	If $result Then
		WriteData(@TAB & "Скопировано" & @CRLF)
	Else
		WriteData(@TAB & "Ошибка при копировании" & @CRLF)
	EndIf

Next

Do
	$msg = GUIGetMsg()
Until $msg = $GUI_EVENT_CLOSE
GUIDelete()

Func WriteData($sMessage = "")
	GUICtrlSetData($myedit, $sMessage & @CRLF, 1)
EndFunc   ;==>WriteData
 
Автор
B

BrAWo

Новичок
Сообщения
15
Репутация
1
Спасибо! все работает
 
Верх