Gui [help]

  • hey ich probiere eine gui zu erstellen mit einigen check boxes wo man auswählt was man haben will danach auf einen button klickt und darauf die angegebenen (Bilder) geöffnet werden
    nun habe ich das ganze schon gemacht nur immer wenn ich auf die check boxes klicke wird sofort das bild geöfnet,wie kann ich das verknüpfen das ich zuerst auswähle und dann auf den button klicke und dann erst die bilder geöfnet werden ?

    mfg
    black

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 437, 391, 262)
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 312, 144, 97, 17)
    $Button1 = GUICtrlCreateButton("Start", 288, 264, 75, 25)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 305, 176, 79, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $1 = "Unbenannt.jpg"
    $2 = "lol.jpg"
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Checkbox1
    ShellExecute ($1)
    Case $Checkbox2
    ShellExecute ($2)
    EndSwitch
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
    • Offizieller Beitrag

    Eine Checkbox ist das falsche Control, wenn du nur 1 Auswahl treffen willst, dazu gibt es Radiobuttons.
    Bei Radiobuttons kann immer nur eines in einer Gruppe ausgewählt werden.

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 437, 391, 262)
    $Radio1 = GUICtrlCreateRadio("Bild 1", 312, 144, 97, 17)
    $Radio2 = GUICtrlCreateRadio("Bild 2", 312, 176, 79, 25)
    $Button1 = GUICtrlCreateButton("Start", 288, 264, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $1 = "Unbenannt.jpg"
    $2 = "lol.jpg"
    Local $Auswahl
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Radio1
    $Auswahl = $1
    Case $Radio2
    $Auswahl = $2
    Case $Button1
    ShellExecute($Auswahl)
    EndSwitch
    WEnd

    [/autoit]
  • Danke für deine schnelle rückschrift aber ich meinte das ich mehrere bilder zugleich öfnen will nicht das eine oder das andere wie bei der radio box, deswegen ja die checkboxen damit ich zum beispiel 5 bilder auf einmahl öffnen kann,weißt du da vll auch was ?

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 437, 391, 262)
    $Radio1 = GUICtrlCreateRadio("Bild 1", 312, 144, 97, 17)
    $Radio2 = GUICtrlCreateRadio("Bild 2", 312, 176, 79, 25)
    $Button1 = GUICtrlCreateButton("Start", 288, 264, 75, 25)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $1 = "Unbenannt.jpg"
    $2 = "lol.jpg"
    Local $Auswahl
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Radio1
    $Auswahl = $1
    Case $Radio2
    $Auswahl = $2
    Case $Button1
    ShellExecute($Auswahl)
    EndSwitch
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Na dann halt so:

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 437, 391, 262)
    $Checkbox1 = GUICtrlCreateCheckbox("Bild 1", 312, 144, 97, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Bild 2", 312, 176, 79, 25)
    $Button1 = GUICtrlCreateButton("Start", 288, 264, 75, 25)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###
    $1 = "Unbenannt.jpg"
    $2 = "lol.jpg"

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) = $GUI_CHECKED Then ShellExecute($1)
    If BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED) = $GUI_CHECKED Then ShellExecute($2)
    EndSwitch
    WEnd

    [/autoit]
  • Probier dich mal an Arrays aus .. ein Beispiel

    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 615, 437, 391, 262)

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

    Local $Checkbox = [ _
    GUICtrlCreateCheckbox("Bild 1", 312, 144, 97, 17), _
    GUICtrlCreateCheckbox("Bild 2", 312, 176, 79, 25) _
    ]

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

    $Button1 = GUICtrlCreateButton("Start", 288, 264, 75, 25)
    GUISetState(@SW_SHOW)

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

    Local $Names = [ _
    @DesktopDir & "\Unbenannt.jpg", _
    @DesktopDir & "\lol.jpg", _
    @DesktopDir & "\Unbenannt1.jpg", _
    @DesktopDir & "\lol1.jpg", _
    @DesktopDir & "\Unbenannt2.jpg", _
    @DesktopDir & "\lol2.jpg" _
    ]

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    For $i = 0 To UBound($Checkbox) -1
    If BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED) = $GUI_CHECKED Then ShellExecute($Names[$i])
    Next
    EndSwitch
    WEnd

    [/autoit]


    Darauf achten das erste Bild in der Liste gehört zur ersten Checkbox.

    [autoit]

    Local $Names = [ _
    @DesktopDir & "\Unbenannt.jpg", _
    @DesktopDir & "\lol.jpg", _
    @DesktopDir & "\Unbenannt1.jpg", _
    @DesktopDir & "\lol1.jpg", _
    @DesktopDir & "\Unbenannt2.jpg", _
    @DesktopDir & "\lol2.jpg" _
    ]

    [/autoit]


    Diese Liste kannst Du dir auch sparen indem man die Dateien einfach im Ordner schon gleich benennt und sie mit einer Zahl am Ende unterscheidet. --> Bild[1].jpg oder Bild_1.jpg
    Folgende Zeile müsste dann so aussehen:

    [autoit]

    If BitAND(GUICtrlRead($Checkbox[$i]), $GUI_CHECKED) = $GUI_CHECKED Then ShellExecute(@DesktopDir & "\Bild[" & $i & "].jpg")

    [/autoit]

    ..eventuell den Pfad zu den Bilderordner anpassen.

    • Offizieller Beitrag

    Ich würde besser nur ein Array verwenden für Checkboxen und zugehörige Bilder.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Form1", 615, 437, 391, 262)

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

    Local $Checkbox[2][2] = [ _
    [GUICtrlCreateCheckbox("Bild 1", 312, 144, 97, 17), @DesktopDir & "\Unbenannt.jpg"], _
    [GUICtrlCreateCheckbox("Bild 2", 312, 176, 79, 25), @DesktopDir & "\lol.jpg"]_
    ]

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

    $Button1 = GUICtrlCreateButton("Start", 288, 264, 75, 25)
    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($Checkbox) -1
    If BitAND(GUICtrlRead($Checkbox[$i][0]), $GUI_CHECKED) Then ShellExecute($Checkbox[$i][1])
    Next
    EndSwitch
    WEnd

    [/autoit]

  • Soweit dachte ich auch aber dann dachte ich das der Threadersteller einen kleinen Code hatte und dann bestimmt schon mit 1D Arrays erstmal zurecht kommen muss.
    Den Umgang bzw den Übergang des Umgangs von 1D auf 2 oder 3 ist Übungssache. Denke mal mit 2D Arrays wird er selbst und allein nicht weit kommen ohne sich zu demotivieren.
    Im Grunde aber richtig so mit einem 2 Dimensionalen Array!