Aktion nach Klicken von Button ausführen

  • Ich habe 4 von diesen Radios und einen Button.
    Nach dem klicken des Buttons soll mit "$nMsg = GUIGetMsg()" die Auswahl ausgegeben werden und über ein Swich Case dann eine bestimmte Aktion durchgeführt werden.

    Das Folgende soll nach dem Drücken auf den Button gemacht werden:

    Habe schon alles Mögliche ausprobiert und bin langsam echt am verzweifeln.
    Mit dem While 1 ... WEnd, welches man oft liest komme ich ja nicht aus der Schleife raus und kann dann nicht weiter machen.
    Hatte auch schon probiert eine Do ... Until schleife zu machen und die zu beenden wenn GUIGetMsg() den Wert Button 1 ausliest, aber dadurch wurde halt irgendwie die Auswahl des Radios überschreiben.
    Ich bin echt durcheinander, ich glaub ich mach erstmal ne kleine Pause damit ich wieder klar denken kann. :(

    EDIT:
    Ich glaube ich habe einen Fehler mit GUIGetMsg() gemacht, bin mir aber nicht sicher.
    Ist das das richtige zum Auslesen?

    2 Mal editiert, zuletzt von das Keks (25. Dezember 2009 um 21:05)

  • Ich glaube, du versuchst das hier zu machen, oder?

    [autoit]

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $Button
    If BitAND(GUICtrlRead($radio1), $GUI_CHECKED) = $GUI_CHECKED
    $Auswahl = 1
    Elseif BitAND(GUICtrlRead($radio2), $GUI_CHECKED) = $GUI_CHECKED
    $Auswahl = 2
    ElseIf BitAND(GUICtrlRead($radio3), $GUI_CHECKED) = $GUI_CHECKED
    $Auswahl = 3
    ElseIf BitAND(GUICtrlRead($radio4), $GUI_CHECKED) = $GUI_CHECKED
    $Auswahl = 4
    EndIf
    EndSwitch

    [/autoit]
  • Ich glaube bei dir fehlen noch die "Then".
    Aber auch berichtigt funktioniert es nicht.
    Bevor ich mir jetzt aber genauere Gedanken über den Fehler mache habe ich erstmal ein anderes Problem.

    Ich setzte direkt den 3 Radio auf checked (GUICtrlSetState ( 5, $GUI_CHECKED )) und trotzdem bekomme ich die Nachricht vom ersten Case.
    Was stimmt hier nicht?

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("FH", 149, 145, 192, 124)
    $Radio1 = GUICtrlCreateRadio("1 CPU", 24, 32, 113, 17)
    $Radio2 = GUICtrlCreateRadio("2 CPU", 24, 48, 113, 17)
    $Radio3 = GUICtrlCreateRadio("4 CPU", 24, 64, 113, 17)
    $Radio4 = GUICtrlCreateRadio("3 CPU, 1 GPU", 24, 80, 113, 17)
    $Folding = GUICtrlCreateLabel("Folding@Home", 35, 8, 110, 17)
    $Button1 = GUICtrlCreateButton("Run", 40, 112, 65, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    GUICtrlSetState ( 5, $GUI_CHECKED )

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

    $nMsg = GUIGetMsg()

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

    Switch $nMsg

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

    Case $nMsg = $radio1 And BitAND(GUICtrlRead($radio1), $GUI_CHECKED) = $GUI_CHECKED
    MsgBox(0,"Test","1")
    Case $nMsg = $radio2 And BitAND(GUICtrlRead($radio2), $GUI_CHECKED) = $GUI_CHECKED
    MsgBox(0,"Test","2")
    Case $nMsg = $radio3 And BitAND(GUICtrlRead($radio3), $GUI_CHECKED) = $GUI_CHECKED
    MsgBox(0,"Test","3")
    Case $nMsg = $radio4 And BitAND(GUICtrlRead($radio4), $GUI_CHECKED) = $GUI_CHECKED
    MsgBox(0,"Test","4")

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

    EndSwitch

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


    EDIT:
    So, es läuft.
    Fragt mich nicht was genau ich gemacht habe.
    ich weiß nur, dass ich ein Beispiel gefunden habe, welches genau da gemacht hat was ich wollte und dann habe ich das Beispiel an meine Bedürfnisse angepasst.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ButtonConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    Opt('MustDeclareVars', 1)

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

    Folding()

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

    Func Folding()

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

    Local $Form1, $Folding, $radio1, $radio2, $radio3, $radio4, $msg, $Auswahl, $Button1
    GUICreate("Folding@Home")
    $Form1 = GUICreate("FH", 149, 145, 192, 124)
    $Radio1 = GUICtrlCreateRadio("1 CPU", 24, 32, 113, 17)
    $Radio2 = GUICtrlCreateRadio("2 CPU", 24, 48, 113, 17)
    $Radio3 = GUICtrlCreateRadio("4 CPU", 24, 64, 113, 17)
    $Radio4 = GUICtrlCreateRadio("3 CPU, 1 GPU", 24, 80, 113, 17)
    $Folding = GUICtrlCreateLabel("Folding@Home", 35, 8, 110, 17)
    $Button1 = GUICtrlCreateButton("Run", 40, 112, 65, 25, $WS_GROUP)

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

    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $Button1
    ExitLoop
    Case $msg = $radio1 And BitAND(GUICtrlRead($radio1), $GUI_CHECKED) = $GUI_CHECKED
    $Auswahl=1
    Case $msg = $radio2 And BitAND(GUICtrlRead($radio2), $GUI_CHECKED) = $GUI_CHECKED
    $Auswahl=2
    Case $msg = $radio3 And BitAND(GUICtrlRead($radio3), $GUI_CHECKED) = $GUI_CHECKED
    $Auswahl=3
    Case $msg = $radio4 And BitAND(GUICtrlRead($radio4), $GUI_CHECKED) = $GUI_CHECKED
    $Auswahl=4
    EndSelect
    WEnd

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

    Switch $Auswahl
    Case $Auswahl=1
    MsgBox(0,"Test","1")
    Case $Auswahl=2
    MsgBox(0,"Test","2")
    Case $Auswahl=3
    MsgBox(0,"Test","3")
    Case $Auswahl=4
    MsgBox(0,"Test","4")
    EndSwitch
    EndFunc

    [/autoit]

    4 Mal editiert, zuletzt von das Keks (25. Dezember 2009 um 21:05)