Hallo zusammen,
Vieln Dank für eure Hilfe. Durch Verwendung von OnEventMode funktioniert es jetzt wie gewünscht.
Die besten Grüße,
ingom
Hallo zusammen,
Vieln Dank für eure Hilfe. Durch Verwendung von OnEventMode funktioniert es jetzt wie gewünscht.
Die besten Grüße,
ingom
Genau das ist das Problem! Du erstellst die Buttons während die MessageLoop-Schleife bereits läuft.
Die Button-Variablen haben als "Vorbelegung" den Wert Null. Die Null von $iMsg stimmt also mit der "Vorbelegung" überein und somit wird dieser Switch-Case-Zweig ausgeführt.Bei dynamisch erzeugten Control-Elementen würde ich immer den OnEventMode einsetzen, denn dort kann man einfach jedem Control-Element eine Funktion zuordnen.
Mit Hilfe von @GUI_CtrlId erhält man dann (innerhalb der Funktion) die ControlId, wenn man den Button anklickt.
Hallo Oscar,
vielen Dank für die Hilfe. Ich werde das mal ändern.
Hallo,
hat noch keiner eine Idee gehabt wo der Fehler liegt?
<Edit>
Interessanterweise ändert sich das verhalten meiner Buttons je nach dem in welcher Reihenfolge ich die Abfrage anordne. Wenn ich die nicht funktionierenden ganz nach vorne setze, wird immer die Funktion aufgerufen, als iMsg kommt "0".
Wenn ich die anderen Buttons noch vorne schiebe, haben die anderen Buttons keine funktion mehr, als wäre der Loop unterbrochen.
>/Edit>
Hallo,
hier ist das Skript als Zip-File.
Danke und Gruß,
ingom
Hallo Oscar,
wie bekomme das hier rein, ich bin anscheinend auf 10.000 Zeichen limitiert.
Hallo zusammen,
ich habe noch nicht sehr lange mit Autoit zu tun, bisher konnte ich meine Probleme allerdings durch reines suchen und lesen beheben. Jetzt bin ich an einem Punkt angelangt an dem ich entweder nicht die richtigen Fragen stelle, oder sonstwie auf dem Schlauch stehe.
Ich erstelle in meiner GUI je nach Menge an Dateien Buttons die eine weitere Aktion ausführen sollen.
Func MainGui()
[/autoit] [autoit][/autoit] [autoit]Local $bAusDone = False
Local $i = 0
Local $j = 0
Local $iMsg =0
Global $hGUI = GUICreate("Automatische Auswertung ProfiTrace2",$gXBreite,$gYHoehe)
Local $idBeenden = GUICtrlCreateButton("Beenden", $gXBreite-90, 5, 85, 35)
Global $idPfAu = GUICtrlCreateButton("Pfad auswählen",5,5,150,35)
Global $idAusStart = GUICtrlCreateButton("Auswertung starten",160,5,150,35)
Global $idWordStart = GUICtrlCreateButton("Word erzeugen",315,5,150,35)
Global $LblInfo = GUICtrlCreateLabel("Die laufende Auswertung kann mit der ESC Taste abgebrochen werden.",5,45,310,35)
GUICtrlSetState ($idAusStart,$GUI_DISABLE)
GUISetState(@SW_SHOW, $hGUI)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]$iMsg = GUIGetMsg()
[/autoit] [autoit][/autoit] [autoit]Switch $iMsg
Case $GUI_EVENT_CLOSE, $idBeenden
ExitLoop
Case $idPfAu
;MsgBox($MB_SYSTEMMODAL," Gui Info 1 ",$idPfAu & GUIGetMsg())
$bAusDone = False
GUISetState(@SW_HIDE, $hGUI)
Pfadauswahl()
Case $idAusStart
;MsgBox($MB_SYSTEMMODAL," Gui Info 2 ",$idAusStart & GUIGetMsg())
AusStarten()
$bAusDone = True
Case $idWordStart
;Word_erzeugen()
_ArrayDisplay($BtnTN_Auswahl)
Case $BtnPfad[0] To $BtnPfad[UBound($aFlt,1)-1]; Das hier funktioniert ohne Probleme
For $i = 1 to UBound($aFlt,1)-1 Step 1
If $iMsg = $BtnPfad[$i] Then
ShellExecute(StringTrimRight($aFlt[$i], 4))
;MsgBox($MB_SYSTEMMODAL," Info", StringTrimRight($aFlt[$i], 4) & $i)
EndIf
Next
Case $BtnTN_Auswahl[0] To $BtnTN_Auswahl[UBound($aFlt,1)-1] ;Hier ist das Problem
For $j = 0 to UBound($aFlt,1)-1 Step 1
If $iMsg = $BtnTN_Auswahl[$j] Then
MsgBox(0,"TNAuswahl" &$j,$iMsg &" = " & $BtnTN_Auswahl[$j])
call(TN_Auswahl($j))
EndIf
Next
Case $idFertig
GUISetState(@SW_HIDE, $hGUI2)
EndSwitch
[/autoit] [autoit][/autoit] [autoit]If $iMsg >0 Then MsgBox(0," iMsg = " &$iMsg,"Bla: " & $BtnTN_Auswahl[1]); hier wird die richtige Nummer angezeigt
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit];If $bAusDone = True Then ShellExecute($sFileSelectFolder)
[/autoit] [autoit][/autoit] [autoit]GUIDelete($hGUI)
Exit
EndFunc
[/autoit]Ich sehe den Fehler nicht, wenn ich 7 Buttons habe wird nur der 7 richtig ausgeführt. Wenn ich auf die anderen 6 Klicke bekomme ich über die MsgBox aber die korrekte ID geschickt.
Vielen Dank,
ingom