ComboBox - GUI

  • Hi Leute, ich habe eine Frage:
    Wie kann ich (ich benutze Koda) bei einer ComboBox die "Auswahl" erstellen ?

  • [autoit]

    GuiCtrlSetData($combo, "Auswahl1|Auswahl2|Auswahl3")

    [/autoit]

    Script aus der Hilfe:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt('MustDeclareVars', 1)

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

    Example()

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

    Func Example()
    Local $msg
    GUICreate("My GUI combo") ; will create a dialog box that when displayed is centered

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

    GUICtrlCreateCombo("item1", 10, 10) ; create first item
    GUICtrlSetData(-1, "item2|item3", "item3") ; add other item snd set a new default

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

    GUISetState()

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

    ; Run the GUI until the dialog is closed
    While 1
    $msg = GUIGetMsg()

    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd
    EndFunc ;==>Example

    [/autoit]
  • also habe jetzt ein bissel was rumgeguckt und interessiere mich auch wie man was mit der Combo macht... ( bin neu )

    wie lese ich aus was ich angewählt habe? also in nem anderen script habe ich (bei Checkboxes) es so gemacht:

    [autoit]

    [...]
    $ok = GUICtrlcreatebutton("OK",11,70,50,30)
    GUISETState()
    While 1
    $msg = GUIGETMSG()
    IF $msg = -3 Then ; abfrage für den X button
    Exit
    EndIf
    ;IF für OK button
    If $msg = $ok Then
    If GUICtrlRead($1) = $GUI_CHECKED THen
    [...]
    EndIf
    EndIf
    [...]

    [/autoit]

    aber man kann´s ja nciht so machen da man vor das "GUICtrlCreateCombo" kein $1 machen kann... zumindestens macht er bei mir dann nur fehler...

    würde mich über informationen freuen wie ich es richtig mache...
    also ich möcht nur eine Combobox sozusagen test1,test2,test3, und wenn ich test 3 auswähle und OK klicke das er dann das bestimmte für test3 ausführt.. nur wie?

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • Hallo blackdeath911,

    sowas findest du eigentlich in der Hife, aber ich habe dir mal hier ein Beispiel geschrieben.

    Spoiler anzeigen
    [autoit]


    [...]
    $combo = GUICtrlCreateCombo("Test 1|Test 2|Test3", 10, 10, 100, 25)
    $button = GUICtrlCreateButton("OK", 10, 50, 100, 25)

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

    GUISetState()

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

    While 1
    $msg = GUIGetMsg()

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

    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button
    If GUICtrlRead($combo) = "Test 1" Then
    MsgBox(64, "Combo Beispiel", "Du hast "Test 1" ausgewählt.")
    ElseIf GUICtrlRead($combo) = "Test 2" Then
    MsgBox(64, "Combo Beispiel", "Du hast "Test 2" ausgewählt.")
    [...]

    [/autoit]
  • so wie du es geschrieben hast steht direkt in der Combo Box

    Test 1|Test 2|Test 3

    aber ich kann nciht zwischen den jeweiligen wechseln

    habe es jetzt so gemacht und es funktioniert:

    [autoit]

    #include <GUIConstantsEx.au3>
    _Example("Combo GUI")
    Func _Example($sTitel)
    Local $msg
    GUICreate($sTitel)

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

    $cb = GUICtrlCreateCombo("item1", 10, 10, 100, 25)
    GUICtrlSetData(-1, "item2|item3", "item1")
    $ok = GUICtrlcreatebutton("OK",11,70,50,30)
    GUISetState()

    While 1
    $msg = GUIGetMsg()

    Switch $msg

    case $ok
    If GUICtrlRead($cb) = "item1" Then
    sleep (10)
    MsgBox (64, "test", "item 1 gedrückt")
    GUIDelete("My GUI combo")
    exit
    EndIf
    If GUICtrlRead($cb) = "item2" Then
    sleep (10)
    MsgBox (64, "test", "item 2 gedrückt")
    GUIDelete("My GUI combo")
    exit
    EndIf
    If GUICtrlRead($cb) = "item3" Then
    sleep (10)
    MsgBox (64, "test", "item 3 gedrückt")
    GUIDelete("My GUI combo")
    exit
    EndIf
    case $GUI_EVENT_CLOSE
    ExitLoop
    EndSwitch
    WEnd
    EndFunc

    [/autoit]

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • Sorry, ich habe es aber ausgebessert. Aber wie ich es sehe, hast du es auch schon hinbekommen.

    [autoit]


    $combo = GUICtrlCreateCombo("Test 1", 10, 10, 100, 50)
    GUICtrlSetData($combo, "Test 2|Test 3")

    [/autoit]

    Ich habe es wärend der Arbeit gepostet und musste mich deshalb ein wenig beeilen mit dem schreiben.

    Ach und noch was. Du brauchst vor Exit nicht das GUI löschen, da, dass Programm eh beendet wird.

    2 Mal editiert, zuletzt von MehmeX (23. Mai 2009 um 12:57)

  • Und so kann man einen Code extrem verkürzen. Die ; --- sind nur abstandhalter, damits etwas übersichtlicher wird.

    Spoiler anzeigen
    [autoit]

    $GUI = GUICreate ("Test", 120, 40)
    ; ---
    $Combo1 = GUICtrlCreateCombo ("Auswählen", 10, 10, 100)
    ; ---
    For $i = 1 To 100 Step 1
    GUICtrlSetData ($Combo1, $i)
    Next
    ; ---
    GUISetState ()
    ; ---
    While 1
    $msg = GUIGetMsg ()
    For $i = 1 To 100 Step 1
    Switch $msg
    Case $i
    $Read = GUICtrlRead ($Combo1)
    MsgBox (0, "", $Read)
    Case -3
    Exit
    EndSwitch
    Next
    WEnd

    [/autoit]

    Oder auch so:

    Spoiler anzeigen
    [autoit]

    $GUI = GUICreate ("Test", 120, 40)
    ; ---
    $Combo1 = GUICtrlCreateCombo ("Auswählen", 10, 10, 100)
    ; ---
    $String = "Das|Ist|ein|Test"
    $Split = StringSplit ($String, "|")
    For $i = 1 To $Split[0] Step 1
    GUICtrlSetData ($Combo1, $Split[$i])
    Next
    ; ---
    GUISetState ()
    ; ---
    While 1
    $msg = GUIGetMsg ()
    For $i = 1 To $Split[0] Step 1
    Switch $msg
    Case $i
    $Read = GUICtrlRead ($Combo1)
    MsgBox (0, "Gewählt", "Du hast ''" & $Read & _
    "'' in dem Text ''Das ist ein Test'', gewählt")
    Case -3
    Exit
    EndSwitch
    Next
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Commander21 (23. Mai 2009 um 16:02)

  • Du brauchst noch nichtmal deine For-Schleife in der Main loop:

    Spoiler anzeigen
    [autoit]

    $GUI = GUICreate ("Test", 120, 40)
    $Combo1 = GUICtrlCreateCombo ("Auswählen", 10, 10, 100)

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

    For $i = 1 To 100 Step 1
    GUICtrlSetData ($Combo1, $i)
    Next
    GUISetState ()

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

    While 1
    $msg = GUIGetMsg ()
    Switch $msg
    Case $combo1
    MsgBox (0, "", GUICtrlRead($Combo1))
    Case -3
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • also das was ich da hab ist ja leicht verständlich nur das was ihr da habt versteh ich nciht...

    ich blicke da nicht durch... kanns mal einer kommentieren/erklären?

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • @Blacky: Eigendlich ist da garkeine Raketenwissenschaft dahinter ;) Der einzige Unterschied zwischen den Scripten ist nur das du das Event abfragst, wenn jemand auf den Button drückt und bei den anderen Scripten abgefragt wird, ob sich irgendwas an der Combobox ändert!

    Ich habs trotzdem mal auskommentiert, hoffe das hilft!

    Spoiler anzeigen
    [autoit]

    $GUI = GUICreate ("Test", 120, 40)
    $Combo1 = GUICtrlCreateCombo ("Auswählen", 10, 10, 100)

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

    For $i = 1 To 100 Step 1;Schleife die 100 mal ausgeführt wird..$i ist dabei die Variable,
    GUICtrlSetData ($Combo1, $i);die durchgezählt wird, sodass das Script nach 100
    Next;Durchführungen weiß, dass es die Schleife nicht mehr ausführen soll. Dabei wird bei jedem
    GUISetState ();Ausführen die aktuelle Zahl $i dem Combo hinzugefügt!

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

    While 1
    $msg = GUIGetMsg ()
    Switch $msg
    Case $combo1;Falls der Text der Combobox verändert wird, bekommt das GuiGetMsg mit
    MsgBox (0, "", GUICtrlRead($Combo1));und gibt in einer MsgBox, den Text der in
    Case -3; der Combobox gerade ist aus!
    Exit
    EndSwitch
    WEnd

    [/autoit]