Cool, danke! Werde ich benutzen
Progress-Bar Leerlauf + Kommandozeilenprogramme
-
- [ offen ]
-
MatthiasG. -
12. Februar 2009 um 13:19 -
Geschlossen -
Erledigt
-
-
Wenn ich zeit habe schreibe ich glaube mal eine UDF dafür^^ Mal sehen, wenn dann Poste ich es!
-
Wäre super!
-
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>
[/autoit]
#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 -
- Offizieller Beitrag
Ich habe mal mit Deinem Script etwas experimentiert:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]GUICreate('progress', 400, 200)
[/autoit] [autoit][/autoit] [autoit]
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)GUISetState()
[/autoit] [autoit][/autoit] [autoit]
$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)
WEndFunc _End()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc _SetPercent($aID, $iPercent)
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc _SetMarquee($aID, $iPercent)
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc _CreateProgress($iLeft, $iTop, $iWidth)
[/autoit]
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 -
Wie immer Spitze!
-
- Offizieller Beitrag
Naja, spitze würde ich nicht sagen.
Wenn man nur eine Progressbar braucht, ok, aber bei mehreren Progressbars wird's ziemlich langsam.
Das war jetzt eher eine Bastellösung zu dem hier gewünschten "Hin und Zurück Laufbalken". -
Danke! DAs ist wirklich spitze.
Das mit so einem banalen Thema so viel Aufsehen erregt...
-