Hallo,
irgendwie stehe ich auf dem Schlauch und komme nicht weiter. Ich habe eine GUI gebaut, die einen Button hat. Beim Klicken auf den Button wird eine Funktion aufgerufen die in einer Schleife weitere Befehle abarbeitet.
Ich möchte nun, dass wenn ich während die Schleife läuft auf den Button klicke die Schleife beendet wird und dann wieder durch Klicken auf den Button neu gestartet werden kann.
[autoit]$GUIWidth = 620
$GUIHeight = 380
$FormUpdater = GUICreate("User Files Updaten", $GUIWidth, $GUIHeight, 192, 114, $WS_CAPTION)
[/autoit][autoit][/autoit][autoit]$ProgressLeft = 16
$ProgressBar1 = GUICtrlCreateProgress($ProgressLeft, 320, $GUIWidth - 2 * $ProgressLeft, 22, $PBS_SMOOTH)
$ProgressbarLabel = GUICtrlCreateLabel('0%', $ProgressLeft, 324, $GUIWidth - 2 * $ProgressLeft, 14, $SS_CENTER) ; Prozentanzeige innerhalb der Progressbar
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) ; Transparenter Hintergrund für das Label
$ButtonCommand = GUICtrlCreateButton("Start", 520, $GUIHeight - 8 - 25, 91, 25, $WS_GROUP)
$LabelHeader = GUICtrlCreateLabel("ELCAD Benutzerverwaltung aktualisierung", 16, 8, 602, 33)
GUICtrlSetFont(-1, 18, 800, 0, "MS Sans Serif")
$EditForm = GUICtrlCreateEdit("", 16, 48, 593, 265, $WS_VSCROLL + $ES_WANTRETURN + $ES_AUTOHSCROLL + $ES_READONLY)
$hEdit = GUICtrlGetHandle($EditForm)
GUICtrlSetData(-1, "Projektsuche")
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$a = 1
[/autoit][autoit][/autoit][autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ButtonCommand
Global $BtnID = $nMsg
MsgBox(0, "", $nMsg)
If GUICtrlRead($ButtonCommand) = "Start" Then
GUICtrlSetData($ButtonCommand, "Abbrechen")
MasterFunc()
GUICtrlSetData($ButtonCommand, "Schliessen")
Else
Exit
EndIf
EndSwitch
WEnd
...
Func MasterFunc()
$Temp = GUICtrlRead($EditForm)
GUICtrlSetData($EditForm, $Temp & @CRLF & "Projektsuche gestartet")
_GUICtrlEdit_LineScroll($hEdit, 0, _GUICtrlEdit_GetLineCount($hEdit))
$MasterUserDate = StringLeft(FileGetTime($MasterUserDatFile, 0, 1),
$FolderList = _FileListToRekursiv($LocalProjectFolder, "*.pro", 2)
$Temp = GUICtrlRead($EditForm)
GUICtrlSetData($EditForm, $Temp & @CRLF & "Projektsuche abgeschlossen")
_GUICtrlEdit_LineScroll($hEdit, 0, _GUICtrlEdit_GetLineCount($hEdit))
For $i = 1 To $FolderList[0]
; HIER WIRD DAS ERGEBNIS VON _FileListToRekursiv abgearbeitet ....
GUICtrlSetData($ProgressBar1, 100 / $FolderList[0] * $i)
GUICtrlSetData($ProgressbarLabel, Round(100 / $FolderList[0] * $i, 0) & '%') ; neuen Wert für das Label schreiben
If CheckButton() = 0 Then
$Temp = GUICtrlRead($EditForm)
GUICtrlSetData($EditForm, $Temp & @CRLF & @CRLF & "---- Abbruch durch Benutzer! ---- " & $FolderList[$i])
_GUICtrlEdit_LineScroll($hEdit, 0, _GUICtrlEdit_GetLineCount($hEdit))
GUICtrlSetData($ButtonCommand, "Start")
ExitLoop
EndIf
Next
[/autoit][autoit][/autoit][autoit]EndFunc ;==>MasterFunc
[/autoit][autoit][/autoit][autoit]Func CheckButton()
[/autoit][autoit][/autoit][autoit]$nMsg = GUIGetMsg()
MsgBox(0, "", $nMsg)
MsgBox(0, "", $ButtonCommand)
If $nMsg = $ButtonCommand Then
If GUICtrlRead($ButtonCommand) = "Abbrechen" Then
Return 0
Else
Return 1
EndIf
EndIf
EndFunc ;==>CheckButton
[/autoit][autoit][/autoit][autoit][/autoit]Kennt jemand eine Möglichkeit das zu realisieren?
Vielen Dank schon mal für eure Antworten!!!
Gruß
Steffen