Die Radio Box

  • Hallo erstmal zusammen, ersteinmal also ich bin neu bei AutoIT also habe wenig erfahrung auf diesem Gebiet. Naja hier jedenfalls meine Frage also habe einen Quellcode bis hierin geschafft:

    [autoit]

    #include <GUIConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 259, 179, 209, 125)
    $Radio1 = GUICtrlCreateRadio("Funktion", 24, 32, 65, 17)
    $Radio2 = GUICtrlCreateRadio("Radio1", 24, 48, 65, 17)
    $Radio3 = GUICtrlCreateRadio("Radio1", 24, 64, 65, 17)
    $Button1 = GUICtrlCreateButton("OK", 32, 88, 137, 33, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

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

    Soweit eigentlich gar nicht schlecht aber jetzt mein Problem ich möchte das wenn man eins der drei Selektiert hat und dann auf OK drückt dass dann eine neue Msg oder InputBox öffnet und zwar für jedes Feld eine andere. Ich glaube das kriegt man mit Rückgabwerten hin oder? Aber wie gesagt bin neu hier wäre sehr nett wenn ihr mir helfen würdet. :rolleyes:

    Vielen Dank schonmal im vorheraus!

    Mfg

    Math

  • Ja also du hast ja die While Schleife und da musst du nun die "Cases" reinbaun.

    [autoit]


    #include <GUIConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 259, 179, 209, 125)
    $Radio1 = GUICtrlCreateRadio("Funktion", 24, 32, 65, 17)
    $Radio2 = GUICtrlCreateRadio("Radio1", 24, 48, 65, 17)
    $Radio3 = GUICtrlCreateRadio("Radio1", 24, 64, 65, 17)
    $Button1 = GUICtrlCreateButton("OK", 32, 88, 137, 33, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Radio1
    ;InputBox("Sicherheitscheck", "Bitte geben Sie ein Passwort ein.", "", "*")
    MsgBox(1,"","Radio1-Button")
    Case $Radio2
    ;InputBox("Sicherheitscheck", "Bitte geben Sie ein Passwort ein.", "", "*")
    MsgBox(1,"","Radio2-Button")
    Case $Radio3
    ;InputBox("Sicherheitscheck", "Bitte geben Sie ein Passwort ein.", "", "*")
    MsgBox(1,"","Radio3-Button")
    EndSwitch
    WEnd

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


    Edit: Ups ich hab das mit dem Ok-Button übersehn .. mom

  • Hi und Willkommen im Forum.

    Also die AutoIt Hilfe hilft immer gut weiter, da ist ein sehr gutes Beispiel zu RadioBoxen drin, das dir relativ anschaulich zeigen sollte wie es geht :).

    Hier ist aber mal ne Lösung:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Dim $Radio[3]
    $Form1 = GUICreate("Form1", 259, 179, 209, 125)
    $Radio[0] = GUICtrlCreateRadio("Funktion", 24, 32, 65, 17)
    $Radio[1] = GUICtrlCreateRadio("Radio1", 24, 48, 65, 17)
    $Radio[2] = GUICtrlCreateRadio("Radio1", 24, 64, 65, 17)
    $Button1 = GUICtrlCreateButton("OK", 32, 88, 137, 33, 0)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To UBound($Radio) - 1
    If BitAND(GUICtrlRead($Radio[$i]), $GUI_CHECKED) Then MsgBox(0, "Msgbox" & $i + 1, "Radio " & $i + 1 & " wurde selektiert :)")
    Next
    EndSwitch
    WEnd

    [/autoit]
  • Ok vielen dank für die schnelle und super Hilfe! Ich werde denn das nächste mal ersteinmal bei der Auto IT Hilfe reinschauen!

  • Hallo und herzlich Willkommen Math !

    Ich habe hier einmal ergänzend eines der Radios voreingestellt. Am besten, Du schaust Dir die Funktion „GUICtrlCreateRadio“ einmal in der Hilfe an. ;)

    [autoit]


    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 259, 179, 209, 125)
    $Radio1 = GUICtrlCreateRadio("Funktion", 24, 32, 65, 17)
    GUICtrlSetState(-1, $GUI_CHECKED) ;i ein Radio ist voreingestellt ################################################
    $Radio2 = GUICtrlCreateRadio("Radio1", 24, 48, 65, 17)
    $Radio3 = GUICtrlCreateRadio("Radio1", 24, 64, 65, 17)
    $Button1 = GUICtrlCreateButton("OK", 32, 88, 137, 33, 0)

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

    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Radio1
    ;InputBox("Sicherheitscheck", "Bitte geben Sie ein Passwort ein.", "", "*")
    MsgBox(1, "", "Radio1-Button")
    Case $Radio2
    ;InputBox("Sicherheitscheck", "Bitte geben Sie ein Passwort ein.", "", "*")
    MsgBox(1, "", "Radio2-Button")
    Case $Radio3
    ;InputBox("Sicherheitscheck", "Bitte geben Sie ein Passwort ein.", "", "*")
    MsgBox(1, "", "Radio3-Button")
    EndSwitch
    WEnd

    [/autoit]


    ja und anno2008 meint Du kannst später noch einiges in diesem Script sparen. ;)

    [autoit]


    #include <GUIConstantsEx.au3>

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

    Dim $aRadioLabel[3] = ['Radio1', 'Radio2', 'Radio3'], $aRadio[3]

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

    $Form1 = GUICreate("RadioBox for Math", 259, 179, 209, 125)
    For $i = 0 To 2
    $aRadio[$i] = GUICtrlCreateRadio($aRadioLabel[$i], 24, 32+$i*16, 65, 17)
    GUICtrlSetState($aRadio[0], $GUI_CHECKED)
    Next
    $Button1 = GUICtrlCreateButton("OK", 32, 88, 137, 33, 0)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To 2
    If BitAND(GUICtrlRead($aRadio[$i]), $GUI_CHECKED) Then _
    MsgBox(0, "Msgbox" & $i + 1, "Radio " & $i + 1 & " wurde selektiert :)")
    Next
    EndSwitch
    WEnd

    [/autoit]


    Viel Erfolg ! :)

  • Hi,
    RR04 ja, ok, dann kann man noch automatisch viele Buttons erstellen lassen, aber ich verstehe nicht, warum du das UBound($aRadioLabel) - 1 rausgenommen hast, dann muss man die Zahl nicht von Hand anpassen.
    Abgesehen davon könnte man noch ein Exitloop hinter die Msgbox packen:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Dim $aRadioLabel[3] = ['Radio1', 'Radio2', 'Radio3'], $aRadio[3]

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

    $Form1 = GUICreate("RadioBox for Math", 259, 179, 209, 125)
    For $i = 0 To UBound($aRadioLabel) - 1
    $aRadio[$i] = GUICtrlCreateRadio($aRadioLabel[$i], 24, 32 + $i * 16, 65, 17)
    GUICtrlSetState($aRadio[0], $GUI_CHECKED)
    Next
    $Button1 = GUICtrlCreateButton("OK", 32, 88, 137, 33, 0)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To UBound($aRadioLabel) - 1
    If BitAND(GUICtrlRead($aRadio[$i]), $GUI_CHECKED) Then
    MsgBox(0, "Msgbox" & $i + 1, "Radio " & $i + 1 & " wurde selektiert :)")
    ExitLoop ; bei Radiobutton kann immer nur einer markiert sein. d.h. wenn er einen markierten Button gefunden hat und den angezeigt hat,
    ;braucht er auch nicht weiter zu suchen, weil die anderen alle nicht gecheckt sein können
    EndIf
    Next
    EndSwitch
    WEnd

    [/autoit]

    Wird wohl aber keinen Unterschied machen :D

  • Ich weis was Ubound macht :).
    Dann müsste man halt nur das Array der Radiobuttons anpassen, wenn es halt mal nicht feststeht :D
    Aber das Argument mit der Laufzeit stimmt schon. Ich werde bei so Lösungen trotzdem beim Ubound bleiben, weil man ganz einfach Radiobuttons hinzufügen kann, aber jedem seine Sache :).

    :thumbup:

    • Offizieller Beitrag

    Aber, wenn dass schon am Anfang des Scriptes fest steht (3xRadios) ?
    Am Ergebnis ändert sich nichts, dauert nur ! ;)


    Ist eine Sache der Gewöhnung. Es empfiehlt sich immer UBound($array)-1 zu verwenden, da dann garantiert alle Elemente erfaßt werden. Es kann ja durchaus passieren, dass man eine 'Eingebung' hat und noch ein Radio mehr verwendet, wird jetzt vergessen den Zähler hochzusetzen gibt es einen Fehler. Mit UBound ist halt jede mögliche Veränderung abgesichert. ;)

  • Hallo,

    ich hätte da auch noch einmal eine Frage zu und zwar, wie sehe das denn aus, wenn es auch die Möglichkeit geben soll, dass man 2 Radio Boxes auf einmal selektiert?

    Danke

    AutoGhost

  • Danke für die schnelle Antwort !

    Ich dachte es gehört ja irgend wie noch zur Frage von Math aber ok, ich werds mir fürs nächste mal merken ;)

    Aber haben die Dinger nicht irgend wie einen Rückgabewert o.ä.?

    Also so dass ich sagen kann, "Wenn die Checkbox angehakt ist, Dann mache dies und das"

    Wie kann ich denn das machen?

  • Hi,

    [autoit]

    If BitAND(GUICtrlRead($Checkbox), $GUI_CHECKED) Then ; [...]

    [/autoit]

    Du kannst dir auch mal das Beispiel ein paar Posts oben drüber zu RadioButtons anguggen, das is im Prinzip das gleiche, nur dass es halt Checkboxen sind :)

  • Danke für die Antwort, aber mal eben kurz zurück zu den Radio Boxes, Wenn ich das nach folgendem Beispiel mache, dann kommt - in dem Fall die MSG Box - sie ja gleich wenn ich auf den "Kreis" der Radio Box klicke, aber ich möchte es so machen, dass man erst auf ok o.ä. klicken muss, damit er ja nachdem was ich angekreuzt habe weitermacht..., wie mache ich das denn?

    MfG


    AutoGhost

  • Hi,
    so in etwa?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Dim $aRadioLabel[3] = ['Radio1', 'Radio2', 'Radio3'], $aRadio[3]

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

    $Form1 = GUICreate("RadioBox for Math", 259, 179, 209, 125)
    For $i = 0 To UBound($aRadioLabel) - 1
    $aRadio[$i] = GUICtrlCreateRadio($aRadioLabel[$i], 24, 32 + $i * 16, 65, 17)
    GUICtrlSetState($aRadio[0], $GUI_CHECKED)
    Next
    $Button1 = GUICtrlCreateButton("OK", 32, 88, 137, 33, 0)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To UBound($aRadioLabel) - 1
    If BitAND(GUICtrlRead($aRadio[$i]), $GUI_CHECKED) Then
    Switch $i
    Case 0
    MsgBox(0, "", "haaaaaaaaaaaaaallllo")
    Case 1
    MsgBox(0, "", "test2")
    Case 2
    MsgBox(0, "", "und noch der letzte Radiobutton")
    EndSwitch
    ExitLoop
    EndIf
    Next
    EndSwitch
    WEnd

    [/autoit]