Radio Button

  • Hallo,

    ich habe ein kleines Problem mit Radiobuttons.

    Wenn ich auf meine Buttons klicke
    muß ich prüfen welcher Radiobutton gewählt wurde.

    Je nachdem wird dann eine Funktion gestartet.

    Spoiler anzeigen
    [autoit]


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

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

    $PDF = GUICreate("PDF-Canon-Scan", 551, 581, 530, 188)
    $btnRechnung = GUICtrlCreateButton("Rechnung", 32, 152, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Jahr = GUICtrlCreateInput("2014", 168, 32, 49, 21)
    $btnSchreiben = GUICtrlCreateButton("Schreiben", 35, 67, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $btnAblage = GUICtrlCreateButton("Ablage", 30, 232, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    ;$Group1 = GUICtrlCreateGroup("Scan", 312, 64, 145, 89)
    $Radio1 = GUICtrlCreateRadio("Simplex", 321, 87, 113, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Radio2 = GUICtrlCreateRadio("Duplex", 319, 115, 113, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Jahr", 136, 32, 24, 17)
    $btnexit = GUICtrlCreateButton("beenden", 408, 464, 75, 25)
    GUISetState(@SW_SHOW)

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

    $radioread1 = GUICtrlRead($Radio1)
    $radioread2 = GUICtrlRead($Radio2)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $btnRechnung
    RG()
    Case $btnSchreiben
    Case $btnAblage
    ;Case $Radio1
    ;Case $Radio2
    Case $btnexit
    ;beenden
    EndSwitch
    WEnd

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

    Func RG ()

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

    If $Radioread1 = $GUI_CHECKED Then
    MsgBox(4096,"","Radio1")

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

    ;~ Func _Simplex()
    Elseif $Radioread2 = $GUI_CHECKED Then
    MsgBox(4096,"","Radio2")
    EndIf

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

    ;~ Func _Duplex()

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

    EndFunc

    [/autoit]

    Grüße
    Ilse ;)

    Einmal editiert, zuletzt von Ilse (5. Februar 2014 um 13:32)

  • Du verleichst das Handle mit $GUI_CHECKED und nicht den State.

    [autoit]

    GUICtrlGetState()

    [/autoit]

    musst du mit $GUI_CHECKED vergleichen.

    Falsch gelesen, du musst die erst lesen (GUICtrlRead) wenn du die Abfrage machst ansonsten sind die immer Unchecked.

    Spoiler anzeigen
    [autoit]

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

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

    $PDF = GUICreate("PDF-Canon-Scan", 551, 581, 530, 188)
    $btnRechnung = GUICtrlCreateButton("Rechnung", 32, 152, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Jahr = GUICtrlCreateInput("2014", 168, 32, 49, 21)
    $btnSchreiben = GUICtrlCreateButton("Schreiben", 35, 67, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $btnAblage = GUICtrlCreateButton("Ablage", 30, 232, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    ;$Group1 = GUICtrlCreateGroup("Scan", 312, 64, 145, 89)
    $Radio1 = GUICtrlCreateRadio("Simplex", 321, 87, 113, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Radio2 = GUICtrlCreateRadio("Duplex", 319, 115, 113, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Jahr", 136, 32, 24, 17)
    $btnexit = GUICtrlCreateButton("beenden", 408, 464, 75, 25)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $btnRechnung
    RG()
    Case $btnSchreiben
    Case $btnAblage
    ;Case $Radio1
    ;Case $Radio2
    Case $btnexit
    ;beenden
    EndSwitch
    WEnd

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

    Func RG ()

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

    If GUICtrlRead($Radio1) = $GUI_CHECKED Then
    MsgBox(4096,"","Radio1")

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

    ;~ Func _Simplex()
    Elseif GUICtrlRead($Radio2) = $GUI_CHECKED Then
    MsgBox(4096,"","Radio2")
    EndIf

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

    ;~ Func _Duplex()

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

    EndFunc

    [/autoit]
  • Hi, da es hier nur eine von zwei Möglichkeiten gibt. ;)

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    $PDF = GUICreate("PDF-Canon-Scan", 551, 581, 530, 188)
    $btnRechnung = GUICtrlCreateButton("Rechnung", 30, 152, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $Jahr = GUICtrlCreateInput("2014", 168, 32, 49, 21)
    $btnSchreiben = GUICtrlCreateButton("Schreiben", 30, 67, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    $btnAblage = GUICtrlCreateButton("Ablage", 30, 232, 187, 73)
    GUICtrlSetFont(-1, 14, 400, 0, "MS Sans Serif")
    ;$Group1 = GUICtrlCreateGroup("Scan", 312, 64, 145, 89)
    $Radio1 = GUICtrlCreateRadio("Simplex", 321, 87, 113, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $Radio2 = GUICtrlCreateRadio("Duplex", 319, 115, 113, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Label1 = GUICtrlCreateLabel("Jahr", 136, 32, 24, 17)
    $btnexit = GUICtrlCreateButton("beenden", 408, 464, 75, 25)
    GUISetState(@SW_SHOW)

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

    While True
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3, $btnexit ;$GUI_EVENT_CLOSE
    Exit
    Case $btnRechnung
    RG()
    Case $btnSchreiben

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

    Case $btnAblage

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

    ;~ Case $btnexit
    ;~ ;beenden
    EndSwitch
    WEnd

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

    Func RG()
    If BitAND(GUICtrlRead($Radio1), $GUI_CHECKED) Then ;)
    MsgBox(4096, "", "Radio1 - Simplex")
    ;~ Func _Simplex()
    Else
    MsgBox(4096, "", "Radio2 - Duplex")
    ;~ Func _Duplex()
    EndIf
    EndFunc ;==>RG
    ; Ende

    [/autoit]
    • Offizieller Beitrag

    Und da es ja immer noch gern verkehrt gemacht wird, möchte ich auf den Zusatz in der Hilfe verweisen:

    Zitat

    Bei Checkboxen und Radiobuttons können mehrere Statuse als $GUI_FOCUS und $GUI_CHECKED zurückgegeben werden. So ist z. B. BitAnd(GUICtrlRead($Item),$GUI_CHECKED) zu verwenden um zu sehen ob ein Control markiert ist.


    BTW: Die deutsche Hilfe ist in dem Punkt falsch. Der Plural von Status lautet ebenfalls Status (ohne "e" am Ende).

    Es sollte also heißen:

    [autoit]

    If BitAnd(GUICtrlRead($Radio1), $GUI_CHECKED) Then

    [/autoit]