Autoit Dropdownliste

  • Hallo,
    ich bin neu hier im Autoit-Forum und habe ein paar Probleme die ich selber nicht lösen konnte .... :(

    Meine erste Frage:
    Wie kann ich als Dropdownliste eine Datei her nehmen??

    Meine zweite Frage:
    Wie kann ich den ausgewählten Text weiterbenutzen??


    Also ich möchte eine grafische Oberfläche mit Dropdownfeld, in dem ich dann etwas auswählen kann (als Beispiel item1 oder item2). In dem Skript, das ich bereits habe (von hier ), kann man ein item auswählen und das Skript macht dann sofort eine Ausgabe. Ich habe versucht das so umzuschreiben, dass er erst nach dem drücken auf "OK" eine Ausgabe macht aber irgendwie ohne Erfolg... ?( ?( ?(

    Hier noch mein Skript in dem ich versucht habe die direkte Ausgabe abzuschalten und erst beim Drücken des "OK" Buttons eine Ausgabe zu erzeugen:

    [autoit]

    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)

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

    GUICreate("combotest", 200, 200)
    $combo = GUICtrlCreateCombo("", 5, 5)
    GUICtrlSetData($combo, "|item1|item2|")
    $button1 = GUICtrlCreateButton("OK", 10, 40)
    $button2 = GUICtrlCreateButton("Schließen", 50, 40)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $button1
    GUICtrlSetOnEvent($combo, "_comboread")
    Case $msg = $button2
    GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
    EndSelect
    WEnd

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

    Func _comboread()
    $read = GUICtrlRead($combo)
    If $read = "item1" Then MsgBox(0, "Combobox", $read)
    If $read = "item2" Then MsgBox(0, "Combobox", $read)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Ich bin für jede Hilfe dankbar :) :)

    LG
    Tru5T

    Einmal editiert, zuletzt von Tru5T (12. Februar 2011 um 15:37)

    • Offizieller Beitrag

    Als erstes ein Hinweis: Du darfst auf keinen Fall den OnEvent- und den MessageLoop-Modus gleichzeitig benutzen. Das funktioniert nicht!

    Hier mal Dein Beispiel, wie es funktioniert:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    GUICreate("combotest", 240, 200)
    $combo = GUICtrlCreateCombo("", 5, 5)
    GUICtrlSetData($combo, "|item1|item2|")
    $button1 = GUICtrlCreateButton("OK", 10, 40)
    $button2 = GUICtrlCreateButton("Schließen", 50, 40)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Select
    Case $msg = $button1
    $read = GUICtrlRead($combo)
    Switch $read
    Case 'item1'
    ; hier können weitere Befehle stehen
    MsgBox(0, "Combobox", $read)
    Case 'item2'
    ; hier können weitere Befehle stehen
    MsgBox(0, "Combobox", $read)
    EndSwitch
    Case $msg = $button2
    _exit()
    EndSelect
    WEnd

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

    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]
  • Hallo Tru5T,

    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/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deinem Problem, schau dir dieses Skript an:

    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)
    ;$idInfo = GUICtrlCreateButton("&alle auslesem", 10, 90, 180, 25)
    $idZeigen = GUICtrlCreateButton("&Zeigen", 10, 90, 180, 25)
    GUICtrlSetTip(-1,"Flagge für ausgewähltes Land Zeigen")
    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 $idZeigen
    GUICtrlSetImage($idVorschau, @ScriptDir & "\Flaggen\" & GUICtrlRead($idcbo) & ".gif")
    EndSwitch
    WEnd

    [/autoit]

    dazu benötigst du noch autoit.de/wcf/attachment/12572/

    mfg autoBert

  • Hallo,

    danke für Eure schnelle Hilfe :) :)
    Oscar
    das Skript von dir ist genau das was ich gesucht habe danke :)

    autoBert
    ich hab mir mal die Bücher rundergeladen und werd sie mir morgen mal anschauen danke :)
    die Hilfedatei hab ich schon angeschaut aber irgendwie hab ich da nie etwas zu meinem Problem gefunden ... ?(


    Das Skript macht jetzt per "Buttonklick" eine Ausgabe genau so wie ich es wollte :D :D des mit der Datei funktioniert allerdings leider noch nicht ich hab mich vielleicht falsch ausgedrückt ... ich wollte quasi dieses "Dropdownfeld" nicht selbst ausfüllen sondern ausfüllen lasen und zwar mit dem Inhalt einer Datei ich hab schon einige Sachen im Internet gefunden allerdings haben die bei mir nie gefunzt ...

    Danke nochmal für eure schnelle Hilfe :)

    LG
    Tru5T

  • ich wollte quasi dieses "Dropdownfeld" nicht selbst ausfüllen sondern ausfüllen lasen und zwar mit dem Inhalt einer Datei


    In

    befülle ich eine Combo aus einer INI-Datei.

    und hier noch ein Beispiel mit einer Textdatei:

    Spoiler anzeigen
    [autoit]

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

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

    Const $sCSV = @ScriptDir & "\cboKFZ.TXT"
    Const $sElect = "bitte auswählen"
    Dim $aKFZ, $aSplit, $scboChr = ""
    _FileReadToArray($sCSV, $aKFZ)
    _ArraySort($aKFZ)
    For $i = 1 To UBound($aKFZ) - 1
    ConsoleWrite($i & $aKFZ[$i] & @CRLF)
    $scboChr &= $aKFZ[$i]& "|"
    Next
    ConsoleWrite($scboChr & @CRLF)

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

    $hGui = GUICreate("Combobox aus TXT-Datei", 250, 85, 302, 218)
    $idCboKFZ = GUICtrlCreateCombo($sElect, 8, 8, 200, 25)
    GUICtrlSetTip(-1,"Automarke auswählen")
    GUICtrlSetData(-1, $scboChr)
    $idBtnINFO = GUICtrlCreateButton("&Info", 8, 40)
    GUICtrlSetState(-1,$Gui_DISABLE)
    GUICtrlSetTip(-1,"MsgBox zeigen")
    $idBtnExit = GUICtrlCreateButton("Be&enden", 70, 40)
    GUICtrlSetTip(-1,"Programm beenden")
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $idBtnExit
    Exit
    Case $idCboKFZ
    if GUICtrlRead($idCboKFZ) = $sElect Then
    GUICtrlSetState($idBtnINFO,$Gui_DISABLE)
    Else
    GUICtrlSetState($idBtnINFO,$Gui_ENABLE)
    EndIf
    Case $idBtnINFO
    MsgBox(0,"Info",GUICtrlRead($idCboKFZ))
    EndSwitch
    WEnd

    [/autoit]

    die Datei cboKFZ.TXT hat bei mir folgenden Inhalt:

    Code
    Audi
    Bmw
    Opel
    Ford
    Volkswagen
    Renault
    Peugeot

    und muss im gleichen Verzeichnis wie das Skript liegen,

    mfg autoBert

  • Hallo,

    autoBert
    Danke für deine Hilfe das zweite Skript von dir ist perfekt für meine Zwecke :D :D
    Ich habe es noch etwas angepasst damit ich bei jeder Auswahl eine andere Aktion ausführen kann.

    DFPWare
    ja stimmt ;) aber die einzelnen Befehle die da erklärt bzw. gezeigt werden haben mir auch nicht weitergeholfen :D

    @All
    Ich bin positiv überrascht das mein Problem soo schnell beheben bzw. geklärt werden konnte :) :)
    Danke für eure Antworten und eurer Hilfe

    LG
    Tru5T

  • autoBert
    Danke für deine Hilfe das zweite Skript von dir ist perfekt für meine Zwecke :D :D
    Ich habe es noch etwas angepasst damit ich bei jeder Auswahl eine andere Aktion ausführen kann

    war ja nur als Beispiel gedacht, damit du siehst wie man Combos aus Textdateien füllen kann, da kann soetwas nie 100% passen.

    @All
    Ich bin positiv überrascht das mein Problem soo schnell beheben bzw. geklärt werden konnte :) :)
    Danke für eure Antworten und eurer Hilfe

    Ja, das Forum hier ist schneller als die meisten Supportabteilungen von Firmen.

    mfg autoBert