ComboBox in GUI mit Button und jeweiliger Aktion verknüpfen

  • Servus zusammen,
    vielleicht kann mir jemand von euch bei meinem Problem weiterhelfen. Beschäftige mich erst seit kurzem mit AutoIT und würde gerne folgendes machen:
    Ich habe eine "Combobox" mit mehreren Auswahlmöglichkeiten (in meinem Beispiel Betriebssysteme) in einer GUI erstellt. Die erstellte GUI beinhaltet zusätzlich noch zwei Buttons ("Beenden" und "Aktivieren"). Der eine Button is jediglich zum Beenden gedacht, während der andere Button eine bestimmte Aktion (aus einer Auswahl von 5 Möglichkeiten) ausführen soll.
    Konkret gesagt, wenn ich in der GUI die Auswahl z.b. Windows XP wähle, soll über den Button "Aktivieren" eine bestimmte Aktion durchgeführt und nicht etwa die gleiche Aktion, wie hätte ich z.b. die Auswahl Win7 getroffen.
    Ich habe zum besseren Verständnis einen Teil meines Quellcodes hinzugefügt.

    Spoiler anzeigen


    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

    ; Die erstellte GUI:
    #Region ### START Koda GUI section ### Form=H:\AutoIT\MyLocation\GUI_Entwurf1_MyLocation.kxf
    $MyLocation = GUICreate("MyLocation", 293, 341, 447, 136)

    ;Mein Combofeld:
    $Combo1 = GUICtrlCreateCombo("Windows 7 - 32 Bit", 48, 96, 177, 25)
    GUICtrlSetData(-1, "Windows 7 - 64 Bit")
    GUICtrlSetData(-1, "Windows XP")
    GUICtrlSetData(-1, "Windows Vista - 32 Bit")
    GUICtrlSetData(-1, "Windows Vista - 64 Bit")

    $Welches = GUICtrlCreateLabel("Soll MyLocation aktiviert werden?", 48, 152, 163, 17)
    $MyLocation = GUICtrlCreateLabel("MyLocation Integration", 32, 28, 160, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")

    ;Dieser Button soll eine bestimmte Aktion mit den Auswahlmöglichkeiten aus meinem COmbofeld starten !!!
    $Button1 = GUICtrlCreateButton("Aktivieren", 96, 176, 97, 33, 0)

    $Label1 = GUICtrlCreateLabel("Welches Betriebssystem nutzen Sie gerade?", 48, 72, 214, 17)
    $Button2 = GUICtrlCreateButton("Beenden", 88, 264, 121, 41, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Case $Button1

    ;Hier sollen nun verschiedene Aktionen hin zugefügt werden / z.b. wird der Eintrag "Windows XP" im Combofeld ausgewählt soll Aktion 3 starten
    ; Wird "Windows Vista - 64 Bit im Combofeld ausgewählt, soll Aktion 5 starten

    Aktion 1

    ...

    Aktion 5


    Case $Button2
    WinClose("MyLocation")

    EndSwitch
    WEnd

    Ich hoffe ich habe mein Vorhaben einigermaßen verständlich rüber gebracht. Vielleicht kann der ein oder anderer mir ja eine Denkhilfe geben. Ich bekomm es leider nicht hin. Mir fehlt einfach noch die Erfahrung.
    Schonmal danke im vorraus

    Markus

    Einmal editiert, zuletzt von Glubberer (4. August 2011 um 16:18)

  • Für autoit Quellcode bitte das Tag verwenden:

    Am besten kannst du dein Problem mit Switch lösen. Siehe Beispiel
    Übrigens gibt es auch ein Makro für das Betriebssystem. nämlich @OSType
    Wenn du nichts eingibst und den Button drückst wirds angezeigt ;)

    Spoiler anzeigen
    [autoit]

    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

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

    ; Die erstellte GUI:
    #region ### START Koda GUI section ### Form=H:\AutoIT\MyLocation\GUI_Entwurf1_MyLocation.kxf
    $MyLocation = GUICreate("MyLocation", 293, 341, 447, 136)

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

    ;Mein Combofeld:
    $Combo1 = GUICtrlCreateCombo("", 48, 96, 177, 25)
    GUICtrlSetData(-1, "Windows 7 - 32 Bit|Windows 7 - 64 Bit|Windows XP|Windows Vista - 32 Bit|Windows Vista - 64 Bit")

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

    $Welches = GUICtrlCreateLabel("Soll MyLocation aktiviert werden?", 48, 152, 163, 17)
    $MyLocation = GUICtrlCreateLabel("MyLocation Integration", 32, 28, 160, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")

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

    ;Dieser Button soll eine bestimmte Aktion mit den Auswahlmöglichkeiten aus meinem COmbofeld starten !!!
    $Button1 = GUICtrlCreateButton("Aktivieren", 96, 176, 97, 33, 0)

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

    $Label1 = GUICtrlCreateLabel("Welches Betriebssystem nutzen Sie gerade?", 48, 72, 214, 17)
    $Button2 = GUICtrlCreateButton("Beenden", 88, 264, 121, 41, 0)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    $sRead = GUICtrlRead($Combo1)
    Switch $sRead
    Case "Windows 7 - 32 Bit"
    MsgBox(0,"", "Windows 7 - Bit")
    Case "Windows 7 - 64 Bit"
    MsgBox(0,"", "Windows 7 - 64 Bit")
    Case "Windows XP"
    MsgBox(0,"", "Windows XP")
    Case "Windows Vista - 32 Bit"
    MsgBox(0,"","Windows Vista - 32 Bit")
    Case "Windows Vista - 64 Bit"
    MsgBox(0,"","Windows Vista - 64 Bit")
    Case Else
    Msgbox(0,"OS wurde nicht ausgewählt", @OSType)
    EndSwitch
    Case $Button2
    WinClose("MyLocation")
    EndSwitch
    WEnd

    [/autoit]
  • Hallo Glubberer,

    dies ist am einfachseten mit switch zu lösen:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>

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

    ; Die erstellte GUI:
    #region ### START Koda GUI section ### Form=H:\AutoIT\MyLocation\GUI_Entwurf1_MyLocation.kxf
    $MyLocation = GUICreate("MyLocation", 293, 341, 447, 136)

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

    ;Mein Combofeld:
    $Combo1 = GUICtrlCreateCombo("Windows 7 - 32 Bit", 48, 96, 177, 25)
    GUICtrlSetData(-1, "Windows 7 - 64 Bit")
    GUICtrlSetData(-1, "Windows XP")
    GUICtrlSetData(-1, "Windows Vista - 32 Bit")
    GUICtrlSetData(-1, "Windows Vista - 64 Bit")

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

    $Welches = GUICtrlCreateLabel("Soll MyLocation aktiviert werden?", 48, 152, 163, 17)
    $MyLocation = GUICtrlCreateLabel("MyLocation Integration", 32, 28, 160, 20)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")

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

    ;Dieser Button soll eine bestimmte Aktion mit den Auswahlmöglichkeiten aus meinem COmbofeld starten !!!
    $Button1 = GUICtrlCreateButton("Aktivieren", 96, 176, 97, 33, 0)

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

    $Label1 = GUICtrlCreateLabel("Welches Betriebssystem nutzen Sie gerade?", 48, 72, 214, 17)
    $Button2 = GUICtrlCreateButton("Beenden", 88, 264, 121, 41, 0)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

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

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

    Case $Button1
    ;Hier sollen nun verschiedene Aktionen hin zugefügt werden / z.b. wird der Eintrag "Windows XP" im Combofeld ausgewählt soll Aktion 3 starten
    ; Wird "Windows Vista - 64 Bit im Combofeld ausgewählt, soll Aktion 5 starten
    Switch (GUICtrlRead($Combo1))
    Case "Windows 7 - 64 Bit"
    MsgBox(0, "Aktion", "für Windows 7 - 64 Bit")
    Case "Windows XP"
    MsgBox(0, "Aktion", "für Windows XP")
    Case "Windows Vista - 32 Bit"
    MsgBox(0, "Aktion", "für Windows Vista - 32 Bit")
    Case "Windows Vista - 64 Bit"
    MsgBox(0, "Aktion", "für Windows Vista - 64 Bit")
    EndSwitch
    Case $Button2
    WinClose("MyLocation")
    EndSwitch
    WEnd

    [/autoit]

    edit: Schnitzel war schneller, ich hatte wohl den FF nicht aktualisiert,

    mfg autoBert

  • Hey klasse, ich danke euch beiden, habe meinen Quellcode gerade entsprechend angepasst, das mit der "switch" Loesung klappt prima. Nochmal vielen dank fuer die vor allem schnelle Antwort und sorry wenn ich mit sowas einfachem genervt haben sollte, aber wie gesagt, arbeite noch nicht solange mit AutoIT.

    Gruss
    Glubberer