Problem mit ComboBox

  • Hallo meine lieben Helfer :D
    Ich hab erst vor kurzem mit AutoIT angefangen (also gestern gegen 20 Uhr) und die meisten Tutoriale waren grottig. . . So hab ich versucht mir das ganze nach der Methode "learning by doing" selbst bei zu bringen, aber irgendwie hengt das bei mir hier ^^
    Wie kann ich das machen, das wenn ich bei einer Combobox etwas auswähle das dann (z.B. unten drunter) ein Text erscheint ??
    Ich hab mir das so vorgestellt (Ich weiß es gibt bestimmt einen wesentlich kürzeren Code, aber wie gesagt ich hab erst angefangen und deswegen wüsste ich das nur so zu machen. Da es aber nicht geht brauche ich Hilfe :) )

    Spoiler anzeigen


    #include

    #Region ### START Koda GUI section ### Form=

    $Form = GUICreate("Beispiel", 601, 401, 193, 125)

    $Beispiel = GUICtrlCreateCombo("", 40, 30, 200, 30)
    GUICtrlSetData(-1, "a|b|c|d")

    GUISetState(@SW_SHOW)


    #EndRegion ### END Koda GUI section ###

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Beispiel
    _GUI1 ()
    EndSwitch
    WEnd
    Func _GUI1 ()
    GUICtrlRead ($Beispiel)
    If $Beispiel = "a" Then
    $Info_101 = GUICtrlCreateLabel("Beispielstext - a", 40, 160, 250, 220)
    GUICtrlSetState (@SW_Show)
    EndIf
    If $Beispiel = "b" Then
    $Info_102 = GUICtrlCreateLabel("Beispielstext - b", 40, 160, 250, 220)
    GUICtrlSetState (@SW_Show)
    EndIf
    If $Beispiel = "c" Then
    $Info_103 = GUICtrlCreateLabel("Beispielstext - c", 40, 160, 250, 220)
    GUICtrlSetState (@SW_Show)
    EndIf
    If $Beispiel = "d" Then
    $Info_104 = GUICtrlCreateLabel("Beispielstext - d", 40, 160, 250, 220)
    GUICtrlSetState (@SW_Show)

    EndIf
    EndFunc

    Ich hoffe das was ich da oben fabriziert habe war nicht komplett falsch. . .

    Und schonmal im Vorraus danke für eure Hilfe :)

  • Also erstmal willkommen auf AutoIt, wenn du näxtes mal was postet nimm auch den Button,damitdein Code besser lesbar wird.
    Und dass du erst seit 8 Stunden drann sitzt und sowas kannst :rock:

    Zu deinem Problem: Erstmal ist die ErsteZeile quatsch und erzeugt nur einen Error, damüsste #include <GUIConstants.au3> stehen, damit das Skript funktioniert.
    Und bei deiner Funktion _GUI1() hast du einen Denkfehler gemacht. Erst liest du das Control aus,dann aber in den if-Schleifen,benuzt du die ControlVariable.
    Weiter gibst du deinem label den state @sw_show,aber der befehl guictrlsetstate besteht aus 2 Parametern. Und die zeile ist sowieso nutzlos, da das Control automatisch sichtbar wird
    So müsste es sein

    [autoit]


    Func _GUI1 ()
    $comboread=GUICtrlRead ($Beispiel)
    If $comboread = "a" Then $Info_101 = GUICtrlCreateLabel("Beispielstext - a", 40, 160, 250, 220)
    If $comboread = "b" Then $Info_102 = GUICtrlCreateLabel("Beispielstext - b", 40, 160, 250, 220)
    If $comboread = "c" Then $Info_103 = GUICtrlCreateLabel("Beispielstext - c", 40, 160, 250, 220)
    If $comboread = "d" Then $Info_104 = GUICtrlCreateLabel("Beispielstext - d", 40, 160, 250, 220)
    EndFunc

    [/autoit]

    Man könnte es auch so machen:

    [autoit]


    Func _GUI1()
    GuictrlsetData($Info_101,'Beispieltext - '&Guictrlread($Beispiel)) ;eswerden nur die daten des controlgeändert, kein neues erstellt
    ;Dumusst ellerdingsvor der while schleife ein Label erstellen, welche die variable $Info_101 trägt
    Endfunc

    [/autoit]


    Schaudir dazu mal an:

    [autoit]


    GuictrlsetData()

    [/autoit]
  • 1. Wenn ich den AutoIt-Quellcode Button benutze kann ich nur 5 Zeilen machen und der Rest rutscht dann in die fünfte Zeile (Keine Ahnung warum ^^).
    2. Da sollte eig. auch #include stehen :whistling:
    3. Danke für die schnelle Hilfe, ich bau das gleich ein :) Hab inzwischen das Tutorial entdeckt, mal kuggen ob ich da alles verstehe ^^


    Edit: Wuhu es geht :D Nochmal en fetts thx :)

    Einmal editiert, zuletzt von LongLife (21. Juli 2011 um 09:09)

  • Kleiner Tipp noch:
    AutoIT ist wegen der extrem umfangreichen Hilfedatei so bekannt ;)
    Falls dir mal zu einer Syntax nichts einfallen sollte, einfach F1 drücken.
    Selbst wenn dir die Hilfedatei nicht weiterhilft, was wohl eher selten am Anfang auftreten wird, kannst du auch noch in diesem TuT nachschlagen: http://wiki.autoit.de/wiki/index.php/Tutorial

  • Ich bin der englischen Sprache nicht wirklich gut bemächtigt, daher find ich dieses Tutorial und das Wiki richtig klasse :thumbup:

    Achso -> Wie kann ich mit der ComboBox dann Bilder anzeigen lassen? Das versteh ich noch nicht ganz ^^

  • Ich bin der englischen Sprache nicht wirklich gut bemächtigt, daher find ich dieses Tutorial und das Wiki richtig klasse :thumbup:

    Achso -> Wie kann ich mit der ComboBox dann Bilder anzeigen lassen? Das versteh ich noch nicht ganz ^^

    Die AutoIt-Hilfe gibt's auch in deutsch! Schau einfach mal oben links auf dieser Seite im Bereich Downloads

    UNPLEASANT SPOILER

    You just lost the game!

  • Deswegen sag ich ja -> Ich find das Tutorial und die Wiki richtig klasse :thumbup: Weil ich vorher immer rätseln musste und die Hälfte musste ich mir in Gedanken herleiten :D

    Und trotzdem wüsste ich gerne wie ich mit der ComboBox (von meinem ersten Post) Bilder anzeigen lassen kann . . . Ich verstehs einfach nicht ?(

  • Hallo LongLife,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die deutsche Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/Tutorial Sehr hilfreich ist auch das Buch von peethebee .

    und hier ein kleines Beispielskript wie man Bilder in einer ComboBox verwalten kann:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ComboConstants.au3>
    #include <GuiComboBox.au3>
    #include <File.au3>
    #include <array.au3>

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

    Global $szDrive, $szDir, $szFName, $szExt

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

    $idGUI = GUICreate("Flaggen", 300, 115)
    $idcbo = GUICtrlCreateCombo("", 10, 10, 180, 80, BitOR($CBS_SORT, $GUI_SS_DEFAULT_COMBO))
    $idNeu = GUICtrlCreateButton("...", 200, 10, 30, 25)
    GUICtrlSetTip(-1,"Länder hinzufügen")
    $idVorschau = GUICtrlCreatePic(@ScriptDir & "\Flaggen\NA.gif", 210, 40, 72, 48)
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    #cs
    Case $idInfo
    $count = _GUICtrlComboBox_GetCount($idcbo)
    Dim $acbo[$count]
    $acbo = _GUICtrlComboBox_GetListArray($idcbo)
    _ArrayDisplay($acbo)
    #ce
    Case $idNeu
    $sAlt = GUICtrlRead($idcbo)
    $sMessage = "Um mehrere Länder auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken."
    $sPlus = FileOpenDialog($sMessage, @ScriptDir & "\Flaggen", "Bilder (*.gif)", 7, "", $idGUI)
    If @error Then
    MsgBox(4096, "", "Keine Datei(en) ausgewählt")
    Else
    $aFiles = StringSplit($sPlus, "|")
    If $aFiles[0] > 1 Then ;trifft nur bei Mehrfachauwal zu
    ;$aFiles[0] enthält Anzahl der Strings
    ;$aFiles[1] enthält den Pfad für alle ausgewählten Bilder
    ;$aFiles[2] enthält 1. Bild
    ;$aFiles[n+1] enthält n. Bild

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

    ;Rückgabe des Fileopenialogs in einzzenlne Strings für Array splitten
    ;_ArrayDisplay($aFiles) ;Array anzeigen nur zu Verständnisuwecken evtl. aktivieren

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

    For $i = 2 To $aFiles[0]
    _GUICtrlComboBox_AddString ($idcbo, StringReplace($aFiles[$i],".gif",""))
    Next
    Else ;nur eine Datei ausgewählt
    ConsoleWrite($aFiles[1] & @CRLF)
    _PathSplit($aFiles[1], $szDrive, $szDir, $szFName, $szExt)
    _GUICtrlComboBox_AddString ($idcbo, $szFName)
    EndIf
    EndIf

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

    Case $idcbo
    GUICtrlSetImage($idVorschau, @ScriptDir & "\Flaggen\" & GUICtrlRead($idcbo) & ".gif")
    EndSwitch
    WEnd

    [/autoit]

    Du benötigst dafür noch autoit.de/wcf/attachment/13766/,

    mfg autoBert