Что нового

[Элементы GUI] Прогресс через точки

arabnesso

Новичок
Сообщения
17
Репутация
0
Добрый день, подскажите пожалуйста как сделать так, чтобы точки после 0% попеременно пропадали и появлялись, что бы показать, что программа работает.
Например, после 0% точка появилась, появилась вторая точка, появилась третья, и заново, 0% потом точка и т.д. ? Уже запутался

Код:
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Программа", 617, 449, 192, 114)
$Label1 = GUICtrlCreateLabel("text", 40, 32, 25, 17)
$Label2 = GUICtrlCreateLabel("text", 40, 88, 25, 17)
$Input1 = GUICtrlCreateInput("", 72, 32, 121, 21)
$Input2 = GUICtrlCreateInput("", 72, 88, 113, 21)
$Button1 = GUICtrlCreateButton("Сохранить txt в", 344, 32, 105, 25)
$Label3 = GUICtrlCreateLabel("Сохранить txt в", 456, 40, 80, 17)
$Button2 = GUICtrlCreateButton("Запустить", 344, 80, 105, 25)
$Edit1 = GUICtrlCreateEdit("", 8, 128, 601, 305)
GUISetState(@SW_SHOW)

GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button2, "poehali")

$times = 1
$start = False

While 1
    Sleep(36000)
    If $start and $times <= 100 Then
        GUICtrlSetData ($Edit1, $times & "%..." & @CRLF, "1")
        $times = $times + 1
        $str = ""
        For $i=0 To 8
            $str = $str & Chr(Random(224, 255, 1))
        Next
        GUICtrlSetData($Input1, $str)
        $str = ""
        For $i=0 To 8
            $str = $str & Chr(Random(224, 255, 1))
        Next
        GUICtrlSetData($Input2, $str)
    EndIf
    If $times = 100 Then
        GUICtrlSetState($Button2, $GUI_ENABLE)
    EndIf
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func poehali()
    GUICtrlSetState($Input1, $GUI_DISABLE)
    GUICtrlSetState($Input2, $GUI_DISABLE)
    GUICtrlSetData($Edit1, "")
    $times = 1
    GUICtrlSetData ($Edit1, "Извлечение...." & @CRLF & "0%..." & @CRLF, "1")
    GUICtrlSetState($Button2, $GUI_DISABLE)
    $start = True
    $str = ""
    For $i=0 To 8
        $str = $str & Chr(Random(224, 255, 1))
    Next
    GUICtrlSetData($Input1, $str)
    $str = ""
    For $i=0 To 8
        $str = $str & Chr(Random(224, 255, 1))
    Next
    GUICtrlSetData($Input2, $str)
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
у тебя числа появляются на новой строке. точки зачем?


Добавлено:
Сообщение автоматически объединено:

для примера как сделать, но это топорно
Код:
While 1
	Sleep(500)
	If $start And $times <= 100 Then
		GUICtrlSetData($Edit1, "Извлечение...." & @CRLF & $times & "%.")
		Sleep(500)
		GUICtrlSetData($Edit1, "Извлечение...." & @CRLF & $times & "%..")
		Sleep(500)
		GUICtrlSetData($Edit1, "Извлечение...." & @CRLF & $times & "%...")
		$times = $times + 1
		$str = ""
		For $i = 0 To 8
			$str = $str & Chr(Random(224, 255, 1))
		Next
		GUICtrlSetData($Input1, $str)
		$str = ""
		For $i = 0 To 8
			$str = $str & Chr(Random(224, 255, 1))
		Next
		GUICtrlSetData($Input2, $str)
	EndIf
	If $times = 100 Then
		GUICtrlSetState($Button2, $GUI_ENABLE)
	EndIf
WEnd

Func CLOSEClicked()
	Exit
EndFunc   ;==>CLOSEClicked

Func poehali()
	GUICtrlSetState($Input1, $GUI_DISABLE)
	GUICtrlSetState($Input2, $GUI_DISABLE)
	GUICtrlSetData($Edit1, "")
	$times = 1
	GUICtrlSetData($Edit1, "Извлечение...." & @CRLF & "0%")
	GUICtrlSetState($Button2, $GUI_DISABLE)
	$start = True
	$str = ""
	For $i = 0 To 8
		$str = $str & Chr(Random(224, 255, 1))
	Next
	GUICtrlSetData($Input1, $str)
	$str = ""
	For $i = 0 To 8
		$str = $str & Chr(Random(224, 255, 1))
	Next
	GUICtrlSetData($Input2, $str)
EndFunc   ;==>poehali
 
Автор
A

arabnesso

Новичок
Сообщения
17
Репутация
0
joiner сказал(а):
у тебя числа появляются на новой строке. точки зачем?
Необходимы, что бы они появлялись в новой строке, можно ли осуществить так? А код, который вы прислали я проверил и все нормально, только мне нужно, что бы они так же каждый процент в новую строку шел.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
можно так
Код:
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Программа", 617, 449, 192, 114)
$Label1 = GUICtrlCreateLabel("text", 40, 32, 25, 17)
$Label2 = GUICtrlCreateLabel("text", 40, 88, 25, 17)
Global $Input1 = GUICtrlCreateInput("", 72, 32, 121, 21)
Global $Input2 = GUICtrlCreateInput("", 72, 88, 113, 21)
$Button1 = GUICtrlCreateButton("Сохранить txt в", 344, 32, 105, 25)
$Label3 = GUICtrlCreateLabel("Сохранить txt в", 456, 40, 80, 17)
$Button2 = GUICtrlCreateButton("Запустить", 344, 80, 105, 25)
Global $Edit1 = GUICtrlCreateEdit("", 8, 128, 601, 305)
GUISetState(@SW_SHOW)

GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button2, "poehali")

Global $times
Global $start = False
Local $trd
While 1
	Sleep(500)
	$trd = GUICtrlRead($Edit1)
	If $start And $times <= 100 Then
		GUICtrlSetData($Edit1, $trd & $times & "%")
		Sleep(500)
		GUICtrlSetData($Edit1, $trd & $times & "%.")
		Sleep(500)
		GUICtrlSetData($Edit1, $trd & $times & "%..")
		Sleep(500)
		GUICtrlSetData($Edit1, $trd & $times & "%..." & @CRLF)
		$times = $times + 1
		$str = ""
		For $i = 0 To 8
			$str = $str & Chr(Random(224, 255, 1))
		Next
		GUICtrlSetData($Input1, $str)
		$str = ""
		For $i = 0 To 8
			$str = $str & Chr(Random(224, 255, 1))
		Next
		GUICtrlSetData($Input2, $str)
	EndIf
	If $times = 100 Then
		GUICtrlSetState($Button2, $GUI_ENABLE)
	EndIf
WEnd

Func CLOSEClicked()
	Exit
EndFunc   ;==>CLOSEClicked

Func poehali()
	GUICtrlSetState($Input1, $GUI_DISABLE)
	GUICtrlSetState($Input2, $GUI_DISABLE)
	GUICtrlSetState($Button2, $GUI_DISABLE)
	GUICtrlSetData($Edit1, "")
	GUICtrlSetData($Edit1, "Извлечение...." & @CRLF & "0%", 1)
	Local $trd = GUICtrlRead($Edit1)
	Sleep(500)
	GUICtrlSetData($Edit1, $trd & $times & ".")
	Sleep(500)
	GUICtrlSetData($Edit1, $trd & $times & "..")
	Sleep(500)
	GUICtrlSetData($Edit1, $trd & $times & "..." & @CRLF)
	$times = 1
	$start = True
	$str = ""
	For $i = 0 To 8
		$str = $str & Chr(Random(224, 255, 1))
	Next
	GUICtrlSetData($Input1, $str)
	$str = ""
	For $i = 0 To 8
		$str = $str & Chr(Random(224, 255, 1))
	Next
	GUICtrlSetData($Input2, $str)
EndFunc   ;==>poehali
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
или так
Код:
#include <GUIConstantsEx.au3>

$UnzipTime = 36000 ; время "извлечения" одного процента
$DotTime = 500 ; интервал вывода точек

Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Программа", 617, 449, 192, 114)
$Label1 = GUICtrlCreateLabel("text", 40, 32, 25, 17)
$Label2 = GUICtrlCreateLabel("text", 40, 88, 25, 17)
$Input1 = GUICtrlCreateInput("", 72, 32, 121, 21)
$Input2 = GUICtrlCreateInput("", 72, 88, 121, 21)
$Button1 = GUICtrlCreateButton("Сохранить txt в", 344, 32, 105, 25)
$Label3 = GUICtrlCreateLabel("Сохранить txt в", 456, 40, 80, 17)
$Button2 = GUICtrlCreateButton("Запустить", 344, 80, 105, 25)
$Edit1 = GUICtrlCreateEdit("", 8, 128, 601, 305)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetColor(-1, 0xC0C0C0)
GUICtrlSetFont(-1, 11, 400, 0, "Consolas")
GUISetState(@SW_SHOW)

GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button2, "poehali")

$start = False

While Sleep(11)
    If $start Then
        For $i = 0 To 99
            RandStr($Input1)
            RandStr($Input2)
            GUICtrlSetData ($Edit1, $i & "%", 1)
            $text = GUICtrlRead($Edit1)
            $t = TimerInit()
            While TimerDiff($t) < $UnzipTime
                GUICtrlSetData($Edit1, $text)
                GUICtrlSetData($Edit1, " ", 1)
                Sleep($DotTime)
                For $j = 1 To 3
                    GUICtrlSetData($Edit1, ".", 1)
                    Sleep($DotTime)
                Next
            WEnd
            GUICtrlSetData($Edit1, $text & @CRLF)
        Next
        GUICtrlSetState($Button2, $GUI_ENABLE)
        GUICtrlSetState($Input1, $GUI_ENABLE)
        GUICtrlSetState($Input2, $GUI_ENABLE)
        GUICtrlSetData($Edit1, "100%" & @CRLF & "Готово", 1)
        $start = False
    EndIf
WEnd

Func CLOSEClicked()
    Exit
EndFunc

Func RandStr($Ctrl)
    $str = ""
    For $i = 0 To 8
        $str &= Chr(Random(224, 255, 1))
    Next
    GUICtrlSetData($Ctrl, $str)
EndFunc

Func poehali()
    GUICtrlSetState($Input1, $GUI_DISABLE)
    GUICtrlSetState($Input2, $GUI_DISABLE)
    GUICtrlSetState($Button2, $GUI_DISABLE)
    GUICtrlSetData ($Edit1, "Извлечение..." & @CRLF)
    $start = True
EndFunc
 
Автор
A

arabnesso

Новичок
Сообщения
17
Репутация
0
joiner сказал(а):
можно так
Код:
#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

$Form1 = GUICreate("Программа", 617, 449, 192, 114)
$Label1 = GUICtrlCreateLabel("text", 40, 32, 25, 17)
$Label2 = GUICtrlCreateLabel("text", 40, 88, 25, 17)
Global $Input1 = GUICtrlCreateInput("", 72, 32, 121, 21)
Global $Input2 = GUICtrlCreateInput("", 72, 88, 113, 21)
$Button1 = GUICtrlCreateButton("Сохранить txt в", 344, 32, 105, 25)
$Label3 = GUICtrlCreateLabel("Сохранить txt в", 456, 40, 80, 17)
$Button2 = GUICtrlCreateButton("Запустить", 344, 80, 105, 25)
Global $Edit1 = GUICtrlCreateEdit("", 8, 128, 601, 305)
GUISetState(@SW_SHOW)

GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
GUICtrlSetOnEvent($Button2, "poehali")

Global $times
Global $start = False
Local $trd
While 1
	Sleep(500)
	$trd = GUICtrlRead($Edit1)
	If $start And $times <= 100 Then
		GUICtrlSetData($Edit1, $trd & $times & "%")
		Sleep(500)
		GUICtrlSetData($Edit1, $trd & $times & "%.")
		Sleep(500)
		GUICtrlSetData($Edit1, $trd & $times & "%..")
		Sleep(500)
		GUICtrlSetData($Edit1, $trd & $times & "%..." & @CRLF)
		$times = $times + 1
		$str = ""
		For $i = 0 To 8
			$str = $str & Chr(Random(224, 255, 1))
		Next
		GUICtrlSetData($Input1, $str)
		$str = ""
		For $i = 0 To 8
			$str = $str & Chr(Random(224, 255, 1))
		Next
		GUICtrlSetData($Input2, $str)
	EndIf
	If $times = 100 Then
		GUICtrlSetState($Button2, $GUI_ENABLE)
	EndIf
WEnd

Func CLOSEClicked()
	Exit
EndFunc   ;==>CLOSEClicked

Func poehali()
	GUICtrlSetState($Input1, $GUI_DISABLE)
	GUICtrlSetState($Input2, $GUI_DISABLE)
	GUICtrlSetState($Button2, $GUI_DISABLE)
	GUICtrlSetData($Edit1, "")
	GUICtrlSetData($Edit1, "Извлечение...." & @CRLF & "0%", 1)
	Local $trd = GUICtrlRead($Edit1)
	Sleep(500)
	GUICtrlSetData($Edit1, $trd & $times & ".")
	Sleep(500)
	GUICtrlSetData($Edit1, $trd & $times & "..")
	Sleep(500)
	GUICtrlSetData($Edit1, $trd & $times & "..." & @CRLF)
	$times = 1
	$start = True
	$str = ""
	For $i = 0 To 8
		$str = $str & Chr(Random(224, 255, 1))
	Next
	GUICtrlSetData($Input1, $str)
	$str = ""
	For $i = 0 To 8
		$str = $str & Chr(Random(224, 255, 1))
	Next
	GUICtrlSetData($Input2, $str)
EndFunc   ;==>poehali

Спасибо, разобрался
 
Верх