Progress-Bar Leerlauf + Kommandozeilenprogramme

  • Ich hab hier mal ein Update, das kostet nicht so viel Leistung, geht schneller und flackert nicht (jedenfalls nicht bei mir)
    Du must das sript einfach durch dashier erstezen:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinAPI.au3>
    Dim $Pic[1]
    Global $fPic
    $Prozent = 208
    #Region ### START Koda GUI section ### Form=
    $File = @ScriptDir & "\Data\"
    $Form1 = GUICreate("Progress", 215, 150, 564, 393)
    $Pic1 = GUICtrlCreatePic("E:\Eigene Dateien\AutoIt\Übungen\Progress\Data\3.bmp", 2, 4, 5, 20, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic2 = GUICtrlCreatePic("E:\Eigene Dateien\AutoIt\Übungen\Progress\Data\2.bmp", 7, 4, 200, 20, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic3 = GUICtrlCreatePic("E:\Eigene Dateien\AutoIt\Übungen\Progress\Data\4.bmp", 207, 4, 5, 20, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Silder = GUICtrlCreateSlider(0,26,215)
    $Button1 = GUICtrlCreateButton("Exit", 136, 50, 75, 25, 0)
    GUISetState(@SW_SHOW,$Form1)
    #EndRegion ### END Koda GUI section ###
    $Old = ""
    While 1
    $Read = GUICtrlRead($Silder)
    If $Read <> $Old Then
    _SetProzent($Read)
    $Old = $Read
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    Exit
    EndSwitch
    WEnd
    Func _SetProzent($fProzent)
    GUISetState(@SW_LOCK)
    Local $A,$B
    Local $UBount = UBound($Pic) -1
    If $UBount > 0 Then
    For $B = 1 To $UBount
    GUICtrlDelete ($Pic[$B])
    Next
    EndIf
    Local $Wert = $Prozent * $fProzent /100
    $Wert = StringSplit($Wert,".")
    Local $Wert1 = $Wert[1] +1
    Dim $Pic[$Wert1]
    For $A = 1 To $Wert[1]
    If $A = 1 Then
    $Pic[$A] = GUICtrlCreatePic($File & "\1.bmp",$A +2,7,1,14)
    ElseIf $A = 2 Then
    $Pic[$A] = GUICtrlCreatePic($File & "\1.bmp",$A +2,6,1,16)
    ElseIf $A = $Prozent Then
    $Pic[$A] = GUICtrlCreatePic($File & "\1.bmp",$A +2,7,1,14)
    ElseIf $A = $Prozent -1 Then
    $Pic[$A] = GUICtrlCreatePic($File & "\1.bmp",$A +2,6,1,16)
    ElseIf $A = $Prozent -2 Then
    $Pic[$A] = GUICtrlCreatePic($File & "\1.bmp",$A +2,5,1,18)
    EndIf
    Next
    GUICtrlDelete ($fPic)
    If $fProzent > 2 Then
    $fPic = GUICtrlCreatePic($File & "\1.bmp",5,5,$Wert[1]-4,18)
    EndIf
    GUISetState(@SW_UNLOCK)
    EndFunc

    [/autoit]

    mfg. Jam00

    • Offizieller Beitrag

    Ich habe mal mit Deinem Script etwas experimentiert:

    Spoiler anzeigen
    [autoit]


    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt('GUIOnEventMode', 1)

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate('progress', 400, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_End')
    GUISetBkColor(0xffffff)
    Global $ahProgr = _CreateProgress(50, 25, 200)
    Global $hRadio1 = GUICtrlCreateRadio('Füll-Balken', 270, 10, 100, 20)
    GUICtrlSetState(-1, $GUI_CHECKED)
    Global $hRadio2 = GUICtrlCreateRadio('Lauf-Balken', 270, 40, 100, 20)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()
    $p = 0
    $step = 5
    While True
    $p += $step
    If BitAND(GUICtrlRead($hRadio1), $GUI_CHECKED) Then
    _SetPercent($ahProgr, $p)
    Else
    _SetMarquee($ahProgr, $p)
    EndIf
    If $p >= 100 Or $p <= 0 Then $step = -$step
    Sleep(10)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Func _End()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _SetPercent($aID, $iPercent)
    Local $val = Int((UBound($aID)-1)/100*$iPercent)
    For $i = 0 To UBound($aID)-1
    If $i <= $val Then
    GUICtrlSetState($aID[$i], $GUI_SHOW)
    Else
    GUICtrlSetState($aID[$i], $GUI_HIDE)
    EndIf
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _SetMarquee($aID, $iPercent)
    Local $val = Int((UBound($aID)-1)/100*$iPercent)
    For $i = 0 To UBound($aID)-1
    Switch $i
    Case $val-15 To $val+15
    GUICtrlSetState($aID[$i], $GUI_SHOW)
    Case Else
    GUICtrlSetState($aID[$i], $GUI_HIDE)
    EndSwitch
    Next
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _CreateProgress($iLeft, $iTop, $iWidth)
    Local $aID[$iWidth]
    GUICtrlCreatePic(@ScriptDir & '\data\3.bmp', $iLeft, $iTop, 5, 20)
    GUICtrlCreatePic(@ScriptDir & '\data\2.bmp', $iLeft+5, $iTop, $iWidth-10, 20)
    GUICtrlCreatePic(@ScriptDir & '\data\4.bmp', $iLeft+$iWidth-5, $iTop, 5, 20)
    For $i = 0 To $iWidth-3
    Switch $i
    Case 0
    $aID[$i] = GUICtrlCreatePic(@ScriptDir & '\data\1.bmp', $iLeft+$i+1, $iTop+3, 1, 14)
    Case 1
    $aID[$i] = GUICtrlCreatePic(@ScriptDir & '\data\1.bmp', $iLeft+$i+1, $iTop+2, 1, 16)
    Case $iWidth-4
    $aID[$i] = GUICtrlCreatePic(@ScriptDir & '\data\1.bmp', $iLeft+$i+1, $iTop+2, 1, 16)
    Case $iWidth-3
    $aID[$i] = GUICtrlCreatePic(@ScriptDir & '\data\1.bmp', $iLeft+$i+1, $iTop+3, 1, 14)
    Case Else
    $aID[$i] = GUICtrlCreatePic(@ScriptDir & '\data\1.bmp', $iLeft+$i+1, $iTop+1, 1, 18)
    EndSwitch
    GUICtrlSetState($aID[$i], $GUI_HIDE)
    Next
    Return $aID
    EndFunc

    [/autoit]