Radiobuttons

  • Huhu, habe ein Problem mit den Radiobuttons und die suche hat mir auch nicht weitergeholfen, naja ich poste mal mein Problem.

    $radio1 = GUICtrlCreateRadio ("radio1", 70, 25)
    $radio2 = GUICtrlCreateRadio ("radio2", 150, 25)
    $button1 = GUICtrlCreateButton("button1", 150, 90, 100)

    guisetonevent($radio1, "lala1")
    guisetonevent($radio2, "lala2")

    func lala1() ;für radio1
    ...
    endfunc
    func lala2() ;für radio2
    ...
    endfunc

    Man soll oben im Radio zwischen radio1 und radio2 wählen können und anschließend muss man auf button1 klicken, und dann wird das ausgeführt, was zu dem jeweiligen radio gehört. Also sprich für radio1, lala1 oder ebend für radio2 lala2. Leider steh ich da etwas aufm Schlauch ;) Bitte um Hilfe.

  • Hi,

    etwa so hier, wie im Beispiel ;)

    Spoiler anzeigen
    [autoit]


    ; by Benjamin C. und Ritzelrocker04 ==> RDv2017.au3

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

    #include <GUIConstants.au3>

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

    $GUI = GUICreate("Running Disk v 2.0.17", 315, 150, -1, 180, $WS_OVERLAPPEDWINDOW + $WS_VISIBLE + $WS_CLIPSIBLINGS)
    $gb_All = GUICtrlCreateGroup("", 8, 1, 300, 112)
    $avi = GUICtrlCreateAvi("RDsys\RD.avi", -1, 24, 10, 100, 100, BitOR($ACS_TRANSPARENT,$ACS_AUTOPLAY))
    $gb_EigeneDateien = GUICtrlCreateGroup("Eigene Dateien", 144, 13, 145, 90)
    $bn_Close = GUICtrlCreateButton("&Beenden", 229, 120, 75, 25, 0)
    $bn_OK = GUICtrlCreateButton("&OK", 149, 120, 75, 25, 0)
    GUICtrlSetState(-1,$GUI_DEFBUTTON)
    $rb_Sichern = GUICtrlCreateRadio("&sichern", 150, 40, 113, 17)
    GUICtrlSetState($rb_Sichern, $GUI_CHECKED)
    $rb_SichernUaus = GUICtrlCreateRadio("&nach sichern den PC ausschalten", 150, 65, 113, 33, BitOR($BS_AUTORADIOBUTTON,$BS_MULTILINE))
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    If $nMsg <> 0 Then
    $Sichern = GUICtrlRead($rb_Sichern)
    Select
    Case $nMsg = $GUI_EVENT_CLOSE Or $nMsg = $bn_Close
    Exit
    Case $nMsg = $bn_OK
    If FileExists("E:\$Backup$\$EigeneDateien$\EigeneDateien-0" & @WDAY & ".zip ") Then
    $ExistsFileWahl = MsgBox(32+4, "Löschen", 'Möchten Sie die bereits existierende Datei "EigeneDateien-0' & @WDAY & '.zip" löschen ? ')
    If $ExistsFileWahl = 6 Then
    FileDelete("E:\$Backup$\$EigeneDateien$\EigeneDateien-0" & @WDAY & ".zip ")
    EndIf
    EndIf
    If $Sichern = 1 Then
    $_Userwahlsich = MsgBox(32+4, " Sichern", "Möchten Sie nach der Sicherung weiterarbeiten ? ")
    If $_Userwahlsich = 7 Then
    MsgBox(48, " Sichern", " ...es wurden keine Daten gesichert ! ")
    Exit
    EndIf
    $Methode = "Sichern"
    _SichernFunc1()
    MsgBox(64, " Sichern", " Sicherung abgeschlossen ! ")
    Exit
    Else
    $_Userwahlout = MsgBox(32+4, " Sichern & Ausschalten", "Möchten Sie nach der Sicherung den PC automatisch ausschalten ? ")
    If $_Userwahlout = 7 Then
    MsgBox(48, " Sichern & Ausschalten", " ...es wurden keine Daten gesichert ! ")
    Exit
    EndIf
    $Methode = "Sichern & Ausschalten"
    _SichernFunc1()
    Shutdown(9)
    EndIf
    ExitLoop
    EndSelect
    EndIf
    WEnd

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

    Func _SichernFunc1()

    RunWait(@ComSpec & ' /c ' & "RDsys\7za.exe a -tzip " & "E:\$Backup$\$EigeneDateien$\EigeneDateien-0" & @WDAY & ".zip " & '"C:\Dokumente und Einstellungen\XP-Home\Eigene Dateien"',@ScriptDir ,@SW_MINIMIZE)
    $logfile = FileOpen("RDv2017.log", 1)

    If $logfile = -1 Then
    MsgBox(0, "Error", " Die Datei RDv2017.log konnte nicht geöffnet werden.", 3)
    Exit
    EndIf

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

    FileWriteLine($logfile, "Letzte Sicherung (" & $Methode & ") der Eigenen Dateien am : " & @YEAR & "-" & @MON & "-" & @MDAY & " um " & @HOUR & ":" & @MIN & ":" & @SEC & " Uhr")
    FileClose($logfile)
    SoundSetWaveVolume(50)
    SoundPlay("RDsys\Success.wav", 1)

    EndFunc

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

    Weiterhin viel Erfolg !

  • func _Bunnton1Click()
    if guictrlread($Radio1) = $GUI_CHECKED then _LALA()
    if guictrlread($Radio2) = $GUI_CHECKED then _blabla()
    endfunc

    • Offizieller Beitrag

    Das ist doch doppelt gemoppelt, den Button kannst du dir sparen, da du im OnEvent-Mode arbeitest.
    Du hast doch die Funktionen für die Radios schon definiert. Du brauchst nicht mal den Status prüfen, da ein Radio bei Betätigung den Status $GUI_CHECKED bekommt und alle Radios derselben Gruppe automatisch $GUI_UNCHECKED sind.
    Also in die zugehörigen Funktionen nur reinschreiben, was passieren soll - fertig.

  • so habe mir jetz ein paar Tipps angesehen von euch. Nun bin ich zu folgenden gekommen. Leider funktioniert das ganze nicht, bekomme auch keine Errors, aber das Problem muss iwo beim Button liegen, denn wenn ich den anklicke, passiert nix. Bitte um hilfe ;)

    GUICreate ("blubb", 400, 120) ; GUI NAME
    GUISetState(@SW_SHOW)
    Opt("GUIOnEventMode", 1)


    $haha1 = GUICtrlCreateRadio ("1", 70, 25) ; Wahlfelder
    $haha2 = GUICtrlCreateRadio ("2", 150, 25)
    $haha3 = GUICtrlCreateRadio ("3", 230, 25)
    $haha4 = GUICtrlCreateRadio ("4", 310, 25)

    $button = GUICtrlCreateButton("start!", 150, 90, 100) ; BUTTON

    GUISetOnEvent($button, "_button")

    func _button()
    if guictrlread($haha1) = $GUI_CHECKED then _go1()
    if guictrlread($haha2) = $GUI_CHECKED then _go2()
    if guictrlread($haha3) = $GUI_CHECKED then _go3()
    if guictrlread($haha4) = $GUI_CHECKED then _go4()
    endfunc

    func _go1()
    run ("C:/Programme/Mozilla Firefox/firefox.exe")
    exit
    endfunc

    func _go2()
    run ("C:/Programme/Mozilla Firefox/firefox.exe")
    exit
    endfunc

    func _go3()
    run ("C:/Programme/Mozilla Firefox/firefox.exe")
    exit
    endfunc

    func _go4()
    run ("C:/Programme/Mozilla Firefox/firefox.exe")
    exit
    endfunc

    • Offizieller Beitrag

    Naja, ein paar grundlegende Fehler:
    1. Alle Elemente der GUI deklarieren
    und erst dann
    2. GUI anzeigen
    3. wird eine Endlosschleife benötigt
    4. Ist der Button total überflüssig

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>
    Opt("GUIOnEventMode", 1)
    GUICreate ("blubb", 400, 120) ; GUI NAME
    GUISetOnEvent($GUI_EVENT_CLOSE, '_ende')
    $haha1 = GUICtrlCreateRadio ("1", 70, 25) ; Wahlfelder
    GUICtrlSetOnEvent(-1, '_go1')
    $haha2 = GUICtrlCreateRadio ("2", 150, 25)
    GUICtrlSetOnEvent(-1, '_go2')
    $haha3 = GUICtrlCreateRadio ("3", 230, 25)
    GUICtrlSetOnEvent(-1, '_go3')
    $haha4 = GUICtrlCreateRadio ("4", 310, 25)
    GUICtrlSetOnEvent(-1, '_go4')

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ende()
    Exit
    EndFunc

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

    func _go1()
    run ("C:/Programme/Mozilla Firefox/firefox.exe")
    exit
    endfunc

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

    func _go2()
    run ("C:/Programme/Mozilla Firefox/firefox.exe")
    exit
    endfunc

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

    func _go3()
    run ("C:/Programme/Mozilla Firefox/firefox.exe")
    exit
    endfunc

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

    func _go4()
    run ("C:/Programme/Mozilla Firefox/firefox.exe")
    exit
    endfunc

    [/autoit]
    • Offizieller Beitrag

    Na Punkt 1, 2 und 3 meiner Antwort.
    Du solltest zuerst alle Elemente der GUI deklarieren und erst dann anzeigen lassen.
    Außerdem hast du keine Endlos-Schleife drin. Die brauchst du aber, sonst flackert dein Monitor nur kurz und dann ist das Programm beendet.
    Vergleiche doch meinen Code mit deinem, dann siehst du den Unterschied.