Fokus von Combobox nach Auswahl verlieren

  • Hallo zusammen,

    ist es möglich das eine ComboBox nach dem man seine Auswahl getroffen hat den Fokus sofort wieder verliert, damit sich die Auswahl bei bewegen des zb. Mausrades nicht mehr ungewollt ändert?

    Habe es bisher so versucht, jedoch ohne Erfolg.

    Spoiler anzeigen
    [autoit]

    $combo = GUICtrlCreateCombo($towns[1], $x, $y, $width, $height, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $string, "")
    GUICtrlSetState(-1, $GUI_NOFOCUS)
    Return $combo
    ; um den Focus zu verlieren

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

    $combo = GUICtrlCreateCombo($ware[1], $x, $y, $width, $height, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $string, "")
    GUICtrlSetState(-1, $GUI_Focus)
    GUICtrlSetState($combo, $GUI_SHOW)
    ; den Fokus auf eine andere Combo gesetzt

    [/autoit]

    Zwar ist der Focus bei Start des Programms auf der Zweiten Combo, wählt man jedoch in einer der anderen Combos etwas aus, geht der Focus von denen nicht wieder weg, so wie ich es gerne hätte.

    Wäre super wenn dafür jemand ne Lösung parat hat.

    Mfg Ghostleader

    • Offizieller Beitrag

    Schau dir das an:

    Spoiler anzeigen
    [autoit]

    #include <GuiComboBox.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Constants.au3>

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

    Global $hCombo,$combo1,$combo2

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

    _Main()

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

    Func _Main()
    Local $hGUI

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

    ; Create GUI
    $hGUI = GUICreate("(UDF) ComboBox Create", 400, 296)

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

    $combo1 = GUICtrlCreateCombo("Combo1",2,2,396,296)
    $combo2 = GUICtrlCreateCombo("Combo2",2,42,396,296)
    $hCombo = GUICtrlGetHandle($combo2)
    GUISetState()

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

    ; Add files
    _GUICtrlComboBox_BeginUpdate($hCombo)
    _GUICtrlComboBox_AddDir($hCombo, "", $DDL_DRIVES, False)
    _GUICtrlComboBox_EndUpdate($hCombo)

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

    GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    GUIDelete()
    EndFunc ;==>_Main

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

    Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg
    Local $hWndFrom, $iIDFrom, $iCode
    $hWndFrom = $ilParam
    $iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
    $iCode = BitShift($iwParam, 16) ; Hi Word
    Switch $hWndFrom
    Case $hCombo
    Switch $iCode
    Case $CBN_SELCHANGE ; Sent when the user changes the current selection in the list box of a combo box
    GUICtrlSetState($combo1,$GUI_FOCUS)
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_COMMAND

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hallo Raupi und die anderen,

    ich habe mich mal mit deinem Beispiel an dem Skript wo es rein soll beschäftigt und daher auch erst jetzt meine Antwort.

    Also ich glaube das des so nicht funktioniert bei mir, denn egal wie ich es gesetzt habe geht dann überhaupt nichts mehr.
    Ich gehe davon aus das es an mehreren Dingen liegt, Menü Func geht bei mir so nicht zu machen und auch die Comboerstellung ist ja bei mir net so einfach.
    Kann auch sein das ich gänzlich falsch liege, jedoch bekomme ich es einfach nicht hin.

    Hier mal der Code:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <ListviewConstants.au3>
    #include <EditConstants.au3>
    #include <ListboxConstants.au3>
    #include <INet.au3>

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

    Opt("GUIOnEventMode", 1)
    $FORM1 = GUICreate("WarenHandelsTool", 680, 330, 192, 124)
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimizeForm1")
    $PICPET = GUICtrlCreatePic(@ScriptDir & "\BackgroundStormdevil.jpg", 0, 0, 680, 330)
    GUICtrlSetState($PICPET, $GUI_DISABLE)

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

    Global $FILENAME = "StaedteHandelstool.ini"
    Global $FILENAMEWARE = "Waren.ini"

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

    Dim $TOWNS = GETTOWNS()
    Dim $WARE = GETWARE()

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

    Global $COMBOAMOUNTWARE = 1
    Global $COMBOAMOUNT = 10
    Dim $COMBOSLEFT[$COMBOAMOUNT][2]
    Dim $COMBOSRIGHT[$COMBOAMOUNT]
    Dim $COMBOWARE[$COMBOAMOUNTWARE][2]
    Dim $COMBOWARE1[$COMBOAMOUNTWARE][2]

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

    Global $HLIST = GUICtrlCreateList("", 493, 25, 180, 85, $LBS_SORT, $WS_EX_OVERLAPPEDWINDOW)
    GUICtrlSetOnEvent($HLIST, "itemClicked")
    GUICtrlSetState($HLIST, $GUI_HIDE)

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

    Global $WLIST = GUICtrlCreateList("", 493, 233, 180, 85, $LBS_SORT, $WS_EX_OVERLAPPEDWINDOW)
    GUICtrlSetState($WLIST, $GUI_HIDE)
    GUICtrlCreateLabel("Von Stadt", 20, 4, 95, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 16770244)
    GUICtrlCreateLabel("Nach Stadt", 390, 4, 95, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 0)

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

    Global $CURRENTLABEL

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

    #Region Combos Stadtauswahl
    Local $ABSTAND = 30
    For $I = 0 To $COMBOAMOUNT - 1
    $COMBOSLEFT[$I][0] = CREATECOMBO(20, 25 + $I * $ABSTAND, 95, 25)
    $COMBOSLEFT[$I][1] = GUICtrlCreateLabel("", 130, 27 + $I * $ABSTAND, 250, 30, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 0)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $COMBOSRIGHT[$I] = CREATECOMBO(390, 25 + $I * $ABSTAND, 95, 25)
    GUICtrlSetOnEvent($COMBOSLEFT[$I][0], "comboChanged")
    Next
    #EndRegion Combos Stadtauswahl

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

    #Region Combos Warenauswahl
    Local $ABSTAND = 30
    For $I = 0 To $COMBOAMOUNTWARE - 1
    $COMBOWARE[$I][0] = CREATECOMBOO(493, 205 + $I * $ABSTAND, 180, 25)
    $COMBOWARE1[$I][1] = GUICtrlCreateLabel("", 250, 10 + $I * $ABSTAND, 100, 15, $SS_LEFT)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUICtrlSetOnEvent($COMBOWARE[$I][0], "comboChangedd")
    Next
    #EndRegion Combos Warenauswahl
    GUISetState(@SW_SHOW)

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

    Opt("GUIOnEventMode", 1)
    $FORM2 = GUICreate("Form2", 50, 43, 65, 175, $WS_POPUP)
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimizeForm2")
    $PICPET = GUICtrlCreatePic(@ScriptDir & "\BackgroundStormdevil.jpg", 0, 0, 680, 330)
    GUICtrlSetState($PICPET, $GUI_DISABLE)
    GUICtrlCreateButton("Handel", 5, 13, 40, 18)
    GUICtrlSetOnEvent(-1, "minimizeForm2")
    GUISetState(@SW_SHOW)
    GUISetState(@SW_MINIMIZE)
    $HACTIVE = WinGetHandle("[active]", "")
    WinSetOnTop($FORM1, "", 1)
    $HACTIVE = WinGetHandle("[active]", "")
    WinSetOnTop($FORM2, "", 1)

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

    While 1
    Sleep(4000)
    WEnd

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

    #Region Func Combos Stadt
    Func CLOSE()
    _LOG("Closing programm")
    Exit
    EndFunc

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

    Func MINIMIZEFORM1()
    GUISetState(@SW_RESTORE, $FORM2)
    EndFunc

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

    Func MINIMIZEFORM2()
    GUISetState(@SW_RESTORE, $FORM1)
    GUISetState(@SW_MINIMIZE, $FORM2)
    EndFunc

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

    Func GETTOWNS()
    _LOG("Reading section names..")
    Local $SECTIONAMES = IniReadSectionNames($FILENAME)
    IF (@error) Then
    Local $ERRORMSG = "Could not open file '" & $FILENAME & "'."
    _LOG($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    _LOG("Read " & $SECTIONAMES[0] & " section names.")
    Return $SECTIONAMES
    EndFunc

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

    Func GETITEMS($TOWN)
    Local $ITEMS = IniReadSection($FILENAME, $TOWN)
    IF (@error) Then
    Local $ERRORMSG = "Could not read section '" & $TOWN & "'."
    _LOG($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    Local $ITEMAMOUNT = $ITEMS[0][0]
    _LOG("Found '" & $ITEMAMOUNT & "' items for town '" & $TOWN & "'.")
    Local $AVAILABLEITEMS
    For $I = 1 To $ITEMAMOUNT
    $AVAILABLEITEMS &= $ITEMS[$I][0]
    IF ($I < $ITEMAMOUNT) Then $AVAILABLEITEMS &= "|"
    Next
    Return $AVAILABLEITEMS
    EndFunc
    #EndRegion Func Combos Stadt

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

    #Region Func Combos Waren
    Func CLOSET()
    _LOGE("Closing program")
    Exit
    EndFunc

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

    Func GETWARE()
    _LOGE("Reading section names..")
    Local $SECTIONAMESWARE = IniReadSectionNames($FILENAMEWARE)
    IF (@error) Then
    Local $ERRORMSG = "Could not open file '" & $FILENAMEWARE & "'."
    _LOGE($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    _LOGE("Read " & $SECTIONAMESWARE[0] & " section names.")
    Return $SECTIONAMESWARE
    EndFunc

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

    Func GETWAREITEMS($WARE)
    Local $ITEMSS = IniReadSection($FILENAMEWARE, $WARE)
    IF (@error) Then
    Local $ERRORMSG = "Could not read section '" & $WARE & "'."
    _LOGE($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    Local $ITEMAMOUNTT = $ITEMSS[0][0]
    _LOGE("Found '" & $ITEMAMOUNTT & "' items for town '" & $WARE & "'.")
    Local $AVAILABLEITEMSS
    For $I = 1 To $ITEMAMOUNTT
    $AVAILABLEITEMSS &= $ITEMSS[$I][0]
    IF ($I < $ITEMAMOUNTT) Then $AVAILABLEITEMSS &= "|"
    Next
    Return $AVAILABLEITEMSS
    EndFunc
    #EndRegion Func Combos Waren

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

    Func CREATECOMBO($X, $Y, $WIDTH, $HEIGHT)
    Local $STRING
    For $I = 2 To $TOWNS[0]
    $STRING &= $TOWNS[$I]
    IF ($I < $TOWNS[0]) Then $STRING &= "|"
    Next
    $COMBO = GUICtrlCreateCombo($TOWNS[1], $X, $Y, $WIDTH, $HEIGHT, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $STRING, "")
    Return $COMBO
    EndFunc

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

    Func CREATECOMBOO($X, $Y, $WIDTH, $HEIGHT)
    Local $STRING
    For $I = 2 To $WARE[0]
    $STRING &= $WARE[$I]
    IF ($I < $WARE[0]) Then $STRING &= "|"
    Next
    $COMBO = GUICtrlCreateCombo($WARE[1], $X, $Y, $WIDTH, $HEIGHT, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $STRING, "")
    GUICtrlSetState($COMBO, $GUI_SHOW)
    Return $COMBO
    EndFunc

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

    Func _LOG($MESSAGE, $ERROR = False)
    IF ($ERROR) Then
    ConsoleWriteError(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    EndIf
    EndFunc

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

    Func _LOGE($MESSAGE, $ERROR = False)
    IF ($ERROR) Then
    ConsoleWriteError(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    EndIf
    EndFunc

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

    Func COMBOCHANGED()
    _LOG("Combo " & @GUI_CtrlId & " was selected")
    Local $CLICKEDCOMBO = -1
    For $I = 0 To UBound($COMBOSLEFT)
    IF (@GUI_CtrlId == $COMBOSLEFT[$I][0]) Then
    $CLICKEDCOMBO = $COMBOSLEFT[$I][0]
    $CURRENTLABEL = $COMBOSLEFT[$I][1]
    ExitLoop
    EndIf
    Next
    IF ($CLICKEDCOMBO == -1) Then
    _LOG("Unknown combo was clicked..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($CLICKEDCOMBO)
    _LOG("Item " & $SELECTEDITEM & " was clicked.")
    Local $ITEMS = GETITEMS($SELECTEDITEM)
    IF ($ITEMS == -1) Then
    _LOG("Could not retreive items for town '" & $SELECTEDITEM & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($HLIST, "")
    GUICtrlSetData($HLIST, $ITEMS)
    GUICtrlSetState($HLIST, $GUI_SHOW)
    EndFunc
    Func ITEMCLICKED()
    IF (@GUI_CtrlId <> $HLIST) Then
    _LOG("Unkown callback..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($HLIST)
    _LOG("Item '" & $SELECTEDITEM & "' in List was clicked")
    GUICtrlSetState($HLIST, $GUI_HIDE)
    GUICtrlSetData($CURRENTLABEL, $SELECTEDITEM)
    EndFunc
    #EndRegion

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

    Func COMBOCHANGEDD()
    _LOGE("Combo " & @GUI_CtrlId & " was selected")
    Local $CLICKEDCOMBOO = -1
    For $I = 0 To UBound($COMBOWARE)
    IF (@GUI_CtrlId == $COMBOWARE[$I][0]) Then
    $CLICKEDCOMBOO = $COMBOWARE[$I][0]
    $CURRENTLABEL = $COMBOWARE1[$I][1]
    ExitLoop
    EndIf
    Next
    IF ($CLICKEDCOMBOO == -1) Then
    _LOGE("Unknown combo was clicked..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($CLICKEDCOMBOO)
    _LOGE("Item " & $SELECTEDITEM & " was clicked.")
    Local $ITEMSS = GETWAREITEMS($SELECTEDITEM)
    IF ($ITEMSS == -1) Then
    _LOGE("Could not retreive items for town '" & $SELECTEDITEM & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($WLIST, "")
    GUICtrlSetData($WLIST, $ITEMSS)
    GUICtrlSetState($WLIST, $GUI_SHOW)
    EndFunc

    [/autoit]

    Es wäre super wenn du oder wer anders da mal drüber schauen könnte und anhand von deinem/Raupis Code nen Ansatz liefern könnte der mich da weiter bringt, oder wenn wer Lust hat sich daran zu versuchen bin ich auch net böse.

    Mfg Ghostleader

    • Offizieller Beitrag

    Wenn du willst, das man an deinem Code rumschraubst, dann hänge auch die notwendigen Ini Dateien an.
    "StaedteHandelstool.ini und Waren.ini braucht man zum ausführen deines Scriptes, am besten du hängst es als Zip an deinen Post an.

    • Offizieller Beitrag

    So, jetzt schreibst du noch, was du genau bewirken willst.
    Nach einer Comboauswahl soll Fokus geändert werden, die Frage ist auf welches Control?
    Bei welchen Combos soll sich der Fokus wechseln? Startstadt und oder Endstadt?
    Soll der Fokus von Startstadt auf Endstadt wechseln?

    Fragen über Fragen.

  • Hallo Raupi,

    wenn möglich, dann zu jeder Combo Reihe eine andere Aktionen.

    - Wenn in einer Combo von Von Stadt etwas ausgewählt wird, dann sollte der Fokus auf die sich öffnende Listview ($hList) wechseln.
    - Wenn in einer Combo von Nach Stadt etwas ausgewählt wird, dann sollte der Fokus auf die rechte untere Combo ($comboWare) wechseln.
    - Wenn in der unteren rechten Combo etwas ausgewählt wird, dann sollte der Fokus auf die sich öffnende Listview ($wList) wechseln.

    Ich hoffe, das dies so möglich ist.

    Vielen Dank schon mal für deine Mühen.

    Mfg Ghostleader

    • Offizieller Beitrag

    - Wenn in einer Combo von Von Stadt etwas ausgewählt wird, dann sollte der Fokus auf die sich öffnende Listview ($hList) wechseln. erledigt
    - Wenn in der unteren rechten Combo etwas ausgewählt wird, dann sollte der Fokus auf die sich öffnende Listview ($wList) wechseln. erledigt

    - Wenn in einer Combo von Nach Stadt etwas ausgewählt wird, dann sollte der Fokus auf die rechte untere Combo ($comboWare) wechseln. Nicht erledigt, weil du für die Nach Stadt Combo keine Auswertung hast.
    Wie der Fokus gesetzt wird, kannst du dir ja bei den beiden anderen Combos abschauen.
    Btw. die Funktion für die ListBox $hList ist nicht korrekt, da solltest du aber selber dran arbeiten.
    Wenn der Fokus auf einer ListBox liegt und per Up- und Downtaste die Auswahl geändert wird, dann wird der Event der Listbox ausgelöst, somit verschwindet sofort deine ListBox.
    Obwohl die ListBox unsichtbar ist, behält sie den Fokus und weiter Auswahlen per Up- und Downtaste werden korrekt übernommen, aber du siehst die Auswahl nicht mehr in der ListBox, da sie Hide ist.
    Und zum Verständnis, du benutzt eine ListBox und kein LIstView. Das sind 2 unterschiedliche Controls.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <ListviewConstants.au3>
    #include <EditConstants.au3>
    #include <ListboxConstants.au3>
    #include <INet.au3>

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

    Opt("GUIOnEventMode", 1)
    $FORM1 = GUICreate("WarenHandelsTool", 680, 330, 192, 124)
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimizeForm1")
    $PICPET = GUICtrlCreatePic(@ScriptDir & "\BackgroundStormdevil.jpg", 0, 0, 680, 330)
    GUICtrlSetState($PICPET, $GUI_DISABLE)

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

    Global $FILENAME = "StaedteHandelstool.ini"
    Global $FILENAMEWARE = "Waren.ini"

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

    Dim $TOWNS = GETTOWNS()
    Dim $WARE = GETWARE()

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

    Global $COMBOAMOUNTWARE = 1
    Global $COMBOAMOUNT = 10
    Dim $COMBOSLEFT[$COMBOAMOUNT][2]
    Dim $COMBOSRIGHT[$COMBOAMOUNT]
    Dim $COMBOWARE[$COMBOAMOUNTWARE][2]
    Dim $COMBOWARE1[$COMBOAMOUNTWARE][2]

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

    Global $HLIST = GUICtrlCreateList("", 493, 25, 180, 85, $LBS_SORT, $WS_EX_OVERLAPPEDWINDOW)
    GUICtrlSetOnEvent($HLIST, "itemClicked")
    GUICtrlSetState($HLIST, $GUI_HIDE)

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

    Global $WLIST = GUICtrlCreateList("", 493, 233, 180, 85, $LBS_SORT, $WS_EX_OVERLAPPEDWINDOW)
    GUICtrlSetState($WLIST, $GUI_HIDE)
    GUICtrlCreateLabel("Von Stadt", 20, 4, 95, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 16770244)
    GUICtrlCreateLabel("Nach Stadt", 390, 4, 95, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 0)

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

    Global $CURRENTLABEL

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

    #region Combos Stadtauswahl
    Local $ABSTAND = 30
    For $I = 0 To $COMBOAMOUNT - 1
    $COMBOSLEFT[$I][0] = CREATECOMBO(20, 25 + $I * $ABSTAND, 95, 25)
    $COMBOSLEFT[$I][1] = GUICtrlCreateLabel("", 130, 27 + $I * $ABSTAND, 250, 30, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 0)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $COMBOSRIGHT[$I] = CREATECOMBO(390, 25 + $I * $ABSTAND, 95, 25)
    GUICtrlSetOnEvent($COMBOSLEFT[$I][0], "comboChanged")
    Next
    #endregion Combos Stadtauswahl

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

    #region Combos Warenauswahl
    Local $ABSTAND = 30
    For $I = 0 To $COMBOAMOUNTWARE - 1
    $COMBOWARE[$I][0] = CREATECOMBOO(493, 205 + $I * $ABSTAND, 180, 25)
    $COMBOWARE1[$I][1] = GUICtrlCreateLabel("", 250, 10 + $I * $ABSTAND, 100, 15, $SS_LEFT)
    GUICtrlSetState(-1, $GUI_HIDE)
    GUICtrlSetOnEvent($COMBOWARE[$I][0], "comboChangedd")
    Next
    #endregion Combos Warenauswahl
    GUISetState(@SW_SHOW)

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

    Opt("GUIOnEventMode", 1)
    $FORM2 = GUICreate("Form2", 50, 43, 65, 175, $WS_POPUP)
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimizeForm2")
    $PICPET = GUICtrlCreatePic(@ScriptDir & "\BackgroundStormdevil.jpg", 0, 0, 680, 330)
    GUICtrlSetState($PICPET, $GUI_DISABLE)
    GUICtrlCreateButton("Handel", 5, 13, 40, 18)
    GUICtrlSetOnEvent(-1, "minimizeForm2")
    GUISetState(@SW_SHOW)
    GUISetState(@SW_MINIMIZE)
    $HACTIVE = WinGetHandle("[active]", "")
    WinSetOnTop($FORM1, "", 1)
    $HACTIVE = WinGetHandle("[active]", "")
    WinSetOnTop($FORM2, "", 1)

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

    While 1
    Sleep(4000)
    WEnd

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

    #region Func_Combos Stadt
    Func CLOSE()
    _LOG("Closing programm")
    Exit
    EndFunc ;==>CLOSE

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

    Func MINIMIZEFORM1()
    GUISetState(@SW_RESTORE, $FORM2)
    EndFunc ;==>MINIMIZEFORM1

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

    Func MINIMIZEFORM2()
    GUISetState(@SW_RESTORE, $FORM1)
    GUISetState(@SW_MINIMIZE, $FORM2)
    EndFunc ;==>MINIMIZEFORM2

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

    Func GETTOWNS()
    _LOG("Reading section names..")
    Local $SECTIONAMES = IniReadSectionNames($FILENAME)
    If (@error) Then
    Local $ERRORMSG = "Could not open file '" & $FILENAME & "'."
    _LOG($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    _LOG("Read " & $SECTIONAMES[0] & " section names.")
    Return $SECTIONAMES
    EndFunc ;==>GETTOWNS

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

    Func GETITEMS($TOWN)
    Local $ITEMS = IniReadSection($FILENAME, $TOWN)
    If (@error) Then
    Local $ERRORMSG = "Could not read section '" & $TOWN & "'."
    _LOG($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    Local $ITEMAMOUNT = $ITEMS[0][0]
    _LOG("Found '" & $ITEMAMOUNT & "' items for town '" & $TOWN & "'.")
    Local $AVAILABLEITEMS
    For $I = 1 To $ITEMAMOUNT
    $AVAILABLEITEMS &= $ITEMS[$I][0]
    If ($I < $ITEMAMOUNT) Then $AVAILABLEITEMS &= "|"
    Next
    Return $AVAILABLEITEMS
    EndFunc ;==>GETITEMS
    #endregion Func_Combos Stadt

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

    #region Func_ Combos Waren
    Func CLOSET()
    _LOGE("Closing program")
    Exit
    EndFunc ;==>CLOSET

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

    Func GETWARE()
    _LOGE("Reading section names..")
    Local $SECTIONAMESWARE = IniReadSectionNames($FILENAMEWARE)
    If (@error) Then
    Local $ERRORMSG = "Could not open file '" & $FILENAMEWARE & "'."
    _LOGE($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    _LOGE("Read " & $SECTIONAMESWARE[0] & " section names.")
    Return $SECTIONAMESWARE
    EndFunc ;==>GETWARE

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

    Func GETWAREITEMS($WARE)
    Local $ITEMSS = IniReadSection($FILENAMEWARE, $WARE)
    If (@error) Then
    Local $ERRORMSG = "Could not read section '" & $WARE & "'."
    _LOGE($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    Local $ITEMAMOUNTT = $ITEMSS[0][0]
    _LOGE("Found '" & $ITEMAMOUNTT & "' items for town '" & $WARE & "'.")
    Local $AVAILABLEITEMSS
    For $I = 1 To $ITEMAMOUNTT
    $AVAILABLEITEMSS &= $ITEMSS[$I][0]
    If ($I < $ITEMAMOUNTT) Then $AVAILABLEITEMSS &= "|"
    Next
    Return $AVAILABLEITEMSS
    EndFunc ;==>GETWAREITEMS
    #endregion Func_ Combos Waren

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

    Func CREATECOMBO($X, $Y, $WIDTH, $HEIGHT)
    Local $STRING
    For $I = 2 To $TOWNS[0]
    $STRING &= $TOWNS[$I]
    If ($I < $TOWNS[0]) Then $STRING &= "|"
    Next
    $COMBO = GUICtrlCreateCombo($TOWNS[1], $X, $Y, $WIDTH, $HEIGHT, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $STRING, "")
    Return $COMBO
    EndFunc ;==>CREATECOMBO

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

    Func CREATECOMBOO($X, $Y, $WIDTH, $HEIGHT)
    Local $STRING
    For $I = 2 To $WARE[0]
    $STRING &= $WARE[$I]
    If ($I < $WARE[0]) Then $STRING &= "|"
    Next
    $COMBO = GUICtrlCreateCombo($WARE[1], $X, $Y, $WIDTH, $HEIGHT, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $STRING, "")
    GUICtrlSetState($COMBO, $GUI_SHOW)
    Return $COMBO
    EndFunc ;==>CREATECOMBOO

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

    Func _LOG($MESSAGE, $ERROR = False)
    If ($ERROR) Then
    ConsoleWriteError(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    EndIf
    EndFunc ;==>_LOG

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

    Func _LOGE($MESSAGE, $ERROR = False)
    If ($ERROR) Then
    ConsoleWriteError(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    EndIf
    EndFunc ;==>_LOGE

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

    Func COMBOCHANGED()
    _LOG("Combo " & @GUI_CtrlId & " was selected")
    Local $CLICKEDCOMBO = -1
    For $I = 0 To UBound($COMBOSLEFT)
    If (@GUI_CtrlId == $COMBOSLEFT[$I][0]) Then
    $CLICKEDCOMBO = $COMBOSLEFT[$I][0]
    $CURRENTLABEL = $COMBOSLEFT[$I][1]
    ExitLoop
    EndIf
    Next
    If ($CLICKEDCOMBO == -1) Then
    _LOG("Unknown combo was clicked..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($CLICKEDCOMBO)
    _LOG("Item " & $SELECTEDITEM & " was clicked.")
    Local $ITEMS = GETITEMS($SELECTEDITEM)
    If ($ITEMS == -1) Then
    _LOG("Could not retreive items for town '" & $SELECTEDITEM & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($HLIST, "")
    GUICtrlSetData($HLIST, $ITEMS)
    GUICtrlSetState($HLIST, $GUI_SHOW)
    GUICtrlSetState($HLIST, $GUI_FOCUS); Focus auf ListBox $HLIST setzen
    EndFunc ;==>COMBOCHANGED
    Func ITEMCLICKED()
    If (@GUI_CtrlId <> $HLIST) Then
    _LOG("Unkown callback..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($HLIST)
    _LOG("Item '" & $SELECTEDITEM & "' in List was clicked")
    GUICtrlSetState($HLIST, $GUI_HIDE)
    GUICtrlSetData($CURRENTLABEL, $SELECTEDITEM)
    EndFunc ;==>ITEMCLICKED
    #endregion Combos Stadtauswahl

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

    Func COMBOCHANGEDD()
    _LOGE("Combo " & @GUI_CtrlId & " was selected")
    Local $CLICKEDCOMBOO = -1
    For $I = 0 To UBound($COMBOWARE)
    If (@GUI_CtrlId == $COMBOWARE[$I][0]) Then
    $CLICKEDCOMBOO = $COMBOWARE[$I][0]
    $CURRENTLABEL = $COMBOWARE1[$I][1]
    ExitLoop
    EndIf
    Next
    If ($CLICKEDCOMBOO == -1) Then
    _LOGE("Unknown combo was clicked..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($CLICKEDCOMBOO)
    _LOGE("Item " & $SELECTEDITEM & " was clicked.")
    Local $ITEMSS = GETWAREITEMS($SELECTEDITEM)
    If ($ITEMSS == -1) Then
    _LOGE("Could not retreive items for town '" & $SELECTEDITEM & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($WLIST, "")
    GUICtrlSetData($WLIST, $ITEMSS)
    GUICtrlSetState($WLIST, $GUI_SHOW)
    GUICtrlSetState($WLIST, $GUI_FOCUS); Fokus auf Listbox $WLIST setzen
    EndFunc ;==>COMBOCHANGEDD

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

    Edit: habe die Regionen Func Combos Stadt und Func Combos Waren umbenannt. Wenn man Tidy über dein Script laufen läßt beschwert sich das Prog darüber das eine Func nicht beendet wurde.

  • Hallo Raupi,

    vielen Dank schon mal für deine Arbeit.

    Zitat

    - Wenn in einer Combo von Nach Stadt etwas ausgewählt wird, dann sollte der Fokus auf die rechte untere Combo ($comboWare) wechseln. Nicht erledigt, weil du für die Nach Stadt Combo keine Auswertung hast.

    Ich nehme an, das du damit meinst, das es solch eine Funktion im Script für diese Combo Reihe nicht gibt, liege ich da richtig (siehe Spoiler)?
    Wenn ja dann ist das ganz klar, da es sich bei diesen Combos lediglich um eine Übersicht handelt, wo bei anklicken nichts passieren soll, ausser das die Ziehlstadt angezeigt wird. Geht denn das da Trotzdem zu machen mit dem Focus wechsel, da du diesen bei den anderen beiden ja in eben dieser Funktion gesetzt hast.

    Spoiler anzeigen
    [autoit]

    Func COMBOCHANGED()
    _LOG("Combo " & @GUI_CtrlId & " was selected")
    Local $CLICKEDCOMBO = -1
    For $I = 0 To UBound($COMBOSLEFT)
    If (@GUI_CtrlId == $COMBOSLEFT[$I][0]) Then
    $CLICKEDCOMBO = $COMBOSLEFT[$I][0]
    $CURRENTLABEL = $COMBOSLEFT[$I][1]
    ExitLoop
    EndIf
    Next
    If ($CLICKEDCOMBO == -1) Then
    _LOG("Unknown combo was clicked..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($CLICKEDCOMBO)
    _LOG("Item " & $SELECTEDITEM & " was clicked.")
    Local $ITEMS = GETITEMS($SELECTEDITEM)
    If ($ITEMS == -1) Then
    _LOG("Could not retreive items for town '" & $SELECTEDITEM & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($HLIST, "")
    GUICtrlSetData($HLIST, $ITEMS)
    GUICtrlSetState($HLIST, $GUI_SHOW)
    GUICtrlSetState($HLIST, $GUI_FOCUS); Focus auf ListBox $HLIST setzen
    EndFunc ;==>COMBOCHANGED
    Func ITEMCLICKED()
    If (@GUI_CtrlId <> $HLIST) Then
    _LOG("Unkown callback..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($HLIST)
    _LOG("Item '" & $SELECTEDITEM & "' in List was clicked")
    GUICtrlSetState($HLIST, $GUI_HIDE)
    GUICtrlSetData($CURRENTLABEL, $SELECTEDITEM)
    EndFunc ;==>ITEMCLICKED

    [/autoit]

    Mfg Ghostleader

    Ps: Sorry wegen Listview war ein Fehler meiner Seits.

    • Offizieller Beitrag

    Hier hast du dein Script:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>
    #include <ListviewConstants.au3>
    #include <EditConstants.au3>
    #include <ListboxConstants.au3>
    #include <INet.au3>

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

    Opt("GUIOnEventMode", 1)
    $FORM1 = GUICreate("WarenHandelsTool", 680, 330, 192, 124)
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimizeForm1")
    $PICPET = GUICtrlCreatePic(@ScriptDir & "\BackgroundStormdevil.jpg", 0, 0, 680, 330)
    GUICtrlSetState($PICPET, $GUI_DISABLE)

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

    Global $FILENAME = "StaedteHandelstool.ini"
    Global $FILENAMEWARE = "Waren.ini"

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

    Dim $TOWNS = GETTOWNS()
    Dim $WARE = GETWARE()

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

    Global $COMBOAMOUNTWARE = 1
    Global $COMBOAMOUNT = 10
    Dim $COMBOSLEFT[$COMBOAMOUNT][2]
    Dim $COMBOSRIGHT[$COMBOAMOUNT]
    Dim $COMBOWARE[$COMBOAMOUNTWARE][2]
    Dim $COMBOWARE1[$COMBOAMOUNTWARE][2]

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

    Global $HLIST = GUICtrlCreateList("", 493, 25, 180, 85, $LBS_SORT, $WS_EX_OVERLAPPEDWINDOW)
    GUICtrlSetOnEvent($HLIST, "itemClicked")
    GUICtrlSetState($HLIST, $GUI_HIDE)

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

    Global $WLIST = GUICtrlCreateList("", 493, 233, 180, 85, $LBS_SORT, $WS_EX_OVERLAPPEDWINDOW)
    GUICtrlSetState($WLIST, $GUI_HIDE)
    GUICtrlCreateLabel("Von Stadt", 20, 4, 95, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 16770244)
    GUICtrlCreateLabel("Nach Stadt", 390, 4, 95, 17, $SS_CENTER)
    GUICtrlSetFont(-1, 12, 600)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor(-1, 0)

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

    Global $CURRENTLABEL

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

    #region Combos Stadtauswahl
    Local $ABSTAND = 30
    For $I = 0 To $COMBOAMOUNT - 1
    $COMBOSLEFT[$I][0] = CREATECOMBO(20, 25 + $I * $ABSTAND, 95, 25)
    $COMBOSLEFT[$I][1] = GUICtrlCreateLabel("", 130, 27 + $I * $ABSTAND, 250, 30, $SS_CENTER)
    GUICtrlSetFont(-1, 10, 600)
    GUICtrlSetColor(-1, 0)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    $COMBOSRIGHT[$I] = CREATECOMBO(390, 25 + $I * $ABSTAND, 95, 25)
    GUICtrlSetOnEvent($COMBOSLEFT[$I][0], "comboChanged")
    GUICtrlSetOnEvent($COMBOSRIGHT[$I], "DummyChange")
    Next
    #endregion Combos Stadtauswahl

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

    #region Combos Warenauswahl
    Local $ABSTAND = 30
    ;Der Teil ist vollkommen unnötig, da eh nur 1 COmbo ertsellt wird. Ausserdem nutzt du nie das Label
    ;For $I = 0 To $COMBOAMOUNTWARE - 1
    ; $COMBOWARE[$I][0] = CREATECOMBOO(493, 205 + $I * $ABSTAND, 180, 25)
    ; $COMBOWARE1[$I][1] = GUICtrlCreateLabel("", 250, 10 + $I * $ABSTAND, 100, 15, $SS_LEFT)
    ; GUICtrlSetState(-1, $GUI_HIDE)
    ; GUICtrlSetOnEvent($COMBOWARE[$I][0], "comboChangedd")
    ;Next
    $COMBOWARE[0][0] = CREATECOMBOO(493, 205 , 180, 25)

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

    #endregion Combos Warenauswahl
    GUISetState(@SW_SHOW)

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

    ; Opt("GUIOnEventMode", 1) diese Option mußt du nur 1 mal setzen
    $FORM2 = GUICreate("Form2", 50, 43, 65, 175, $WS_POPUP)
    GUISetOnEvent($GUI_EVENT_CLOSE, "close")
    GUISetOnEvent($GUI_EVENT_MINIMIZE, "minimizeForm2")
    $PICPET = GUICtrlCreatePic(@ScriptDir & "\BackgroundStormdevil.jpg", 0, 0, 680, 330)
    GUICtrlSetState($PICPET, $GUI_DISABLE)
    GUICtrlCreateButton("Handel", 5, 13, 40, 18)
    GUICtrlSetOnEvent(-1, "minimizeForm2")
    GUISetState(@SW_SHOW)
    GUISetState(@SW_MINIMIZE)
    $HACTIVE = WinGetHandle("[active]", "")
    WinSetOnTop($FORM1, "", 1)
    $HACTIVE = WinGetHandle("[active]", "")
    WinSetOnTop($FORM2, "", 1)

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

    While 1
    Sleep(4000)
    WEnd

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

    #region Func_Combos Stadt
    Func CLOSE()
    _LOG("Closing programm")
    Exit
    EndFunc ;==>CLOSE

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

    Func MINIMIZEFORM1()
    GUISetState(@SW_RESTORE, $FORM2)
    EndFunc ;==>MINIMIZEFORM1

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

    Func MINIMIZEFORM2()
    GUISetState(@SW_RESTORE, $FORM1)
    GUISetState(@SW_MINIMIZE, $FORM2)
    EndFunc ;==>MINIMIZEFORM2

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

    Func DummyChange();Hier wird der Focus auf die Combo $COMBOWARE[0][0] gesetzt wenn eine Auswahl in den Combos Nach Stadt ausgewählt wurde
    GUICtrlSetState($COMBOWARE[0][0], $GUI_FOCUS)
    EndFunc ;==>DummyChange

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

    Func GETTOWNS()
    _LOG("Reading section names..")
    Local $SECTIONAMES = IniReadSectionNames($FILENAME)
    If (@error) Then
    Local $ERRORMSG = "Could not open file '" & $FILENAME & "'."
    _LOG($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    _LOG("Read " & $SECTIONAMES[0] & " section names.")
    Return $SECTIONAMES
    EndFunc ;==>GETTOWNS

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

    Func GETITEMS($TOWN)
    Local $ITEMS = IniReadSection($FILENAME, $TOWN)
    If (@error) Then
    Local $ERRORMSG = "Could not read section '" & $TOWN & "'."
    _LOG($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    Local $ITEMAMOUNT = $ITEMS[0][0]
    _LOG("Found '" & $ITEMAMOUNT & "' items for town '" & $TOWN & "'.")
    Local $AVAILABLEITEMS
    For $I = 1 To $ITEMAMOUNT
    $AVAILABLEITEMS &= $ITEMS[$I][0]
    If ($I < $ITEMAMOUNT) Then $AVAILABLEITEMS &= "|"
    Next
    Return $AVAILABLEITEMS
    EndFunc ;==>GETITEMS
    #endregion Func_Combos Stadt

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

    #region Func_ Combos Waren
    Func CLOSET()
    _LOGE("Closing program")
    Exit
    EndFunc ;==>CLOSET

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

    Func GETWARE()
    _LOGE("Reading section names..")
    Local $SECTIONAMESWARE = IniReadSectionNames($FILENAMEWARE)
    If (@error) Then
    Local $ERRORMSG = "Could not open file '" & $FILENAMEWARE & "'."
    _LOGE($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    _LOGE("Read " & $SECTIONAMESWARE[0] & " section names.")
    Return $SECTIONAMESWARE
    EndFunc ;==>GETWARE

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

    Func GETWAREITEMS($WARE)
    Local $ITEMSS = IniReadSection($FILENAMEWARE, $WARE)
    If (@error) Then
    Local $ERRORMSG = "Could not read section '" & $WARE & "'."
    _LOGE($ERRORMSG, True)
    MsgBox(0, "Error", $ERRORMSG)
    Return -1
    EndIf
    Local $ITEMAMOUNTT = $ITEMSS[0][0]
    _LOGE("Found '" & $ITEMAMOUNTT & "' items for town '" & $WARE & "'.")
    Local $AVAILABLEITEMSS
    For $I = 1 To $ITEMAMOUNTT
    $AVAILABLEITEMSS &= $ITEMSS[$I][0]
    If ($I < $ITEMAMOUNTT) Then $AVAILABLEITEMSS &= "|"
    Next
    Return $AVAILABLEITEMSS
    EndFunc ;==>GETWAREITEMS
    #endregion Func_ Combos Waren

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

    Func CREATECOMBO($X, $Y, $WIDTH, $HEIGHT)
    Local $STRING
    For $I = 2 To $TOWNS[0]
    $STRING &= $TOWNS[$I]
    If ($I < $TOWNS[0]) Then $STRING &= "|"
    Next
    $COMBO = GUICtrlCreateCombo($TOWNS[1], $X, $Y, $WIDTH, $HEIGHT, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $STRING, "")
    Return $COMBO
    EndFunc ;==>CREATECOMBO

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

    Func CREATECOMBOO($X, $Y, $WIDTH, $HEIGHT)
    Local $STRING
    For $I = 2 To $WARE[0]
    $STRING &= $WARE[$I]
    If ($I < $WARE[0]) Then $STRING &= "|"
    Next
    $COMBO = GUICtrlCreateCombo($WARE[1], $X, $Y, $WIDTH, $HEIGHT, BitOR($CBS_SORT, $CBS_AUTOHSCROLL, $CBS_DROPDOWNLIST, $WS_VSCROLL))
    GUICtrlSetData(-1, $STRING, "")
    GUICtrlSetState($COMBO, $GUI_SHOW)
    Return $COMBO
    EndFunc ;==>CREATECOMBOO

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

    Func _LOG($MESSAGE, $ERROR = False)
    If ($ERROR) Then
    ConsoleWriteError(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    EndIf
    EndFunc ;==>_LOG

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

    Func _LOGE($MESSAGE, $ERROR = False)
    If ($ERROR) Then
    ConsoleWriteError(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    Else
    ConsoleWrite(@HOUR & ":" & @MIN & ":" & @SEC & @TAB & $MESSAGE & @CRLF)
    EndIf
    EndFunc ;==>_LOGE

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

    Func COMBOCHANGED()
    _LOG("Combo " & @GUI_CtrlId & " was selected")
    Local $CLICKEDCOMBO = -1
    For $I = 0 To UBound($COMBOSLEFT)
    If (@GUI_CtrlId == $COMBOSLEFT[$I][0]) Then
    $CLICKEDCOMBO = $COMBOSLEFT[$I][0]
    $CURRENTLABEL = $COMBOSLEFT[$I][1]
    ExitLoop
    EndIf
    Next
    If ($CLICKEDCOMBO == -1) Then
    _LOG("Unknown combo was clicked..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($CLICKEDCOMBO)
    _LOG("Item " & $SELECTEDITEM & " was clicked.")
    Local $ITEMS = GETITEMS($SELECTEDITEM)
    If ($ITEMS == -1) Then
    _LOG("Could not retreive items for town '" & $SELECTEDITEM & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($HLIST, "")
    GUICtrlSetData($HLIST, $ITEMS)
    GUICtrlSetState($HLIST, $GUI_SHOW)
    GUICtrlSetState($HLIST, $GUI_FOCUS); Focus auf ListBox $HLIST setzen
    EndFunc ;==>COMBOCHANGED
    Func ITEMCLICKED()
    If (@GUI_CtrlId <> $HLIST) Then
    _LOG("Unkown callback..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($HLIST)
    _LOG("Item '" & $SELECTEDITEM & "' in List was clicked")
    GUICtrlSetState($HLIST, $GUI_HIDE)
    GUICtrlSetData($CURRENTLABEL, $SELECTEDITEM)
    EndFunc ;==>ITEMCLICKED
    #endregion Combos Stadtauswahl
    Func COMBOCHANGEDDUMMY()
    GUICtrlSetState($WLIST, $GUI_FOCUS); Fokus auf Listbox $WLIST setzen
    EndFunc ;==>COMBOCHANGEDDUMMY
    Func COMBOCHANGEDD()
    _LOGE("Combo " & @GUI_CtrlId & " was selected")
    Local $CLICKEDCOMBOO = -1
    For $I = 0 To UBound($COMBOWARE)
    If (@GUI_CtrlId == $COMBOWARE[$I][0]) Then
    $CLICKEDCOMBOO = $COMBOWARE[$I][0]
    $CURRENTLABEL = $COMBOWARE1[$I][1]
    ExitLoop
    EndIf
    Next
    If ($CLICKEDCOMBOO == -1) Then
    _LOGE("Unknown combo was clicked..", True)
    Return -1
    EndIf
    Local $SELECTEDITEM = GUICtrlRead($CLICKEDCOMBOO)
    _LOGE("Item " & $SELECTEDITEM & " was clicked.")
    Local $ITEMSS = GETWAREITEMS($SELECTEDITEM)
    If ($ITEMSS == -1) Then
    _LOGE("Could not retreive items for town '" & $SELECTEDITEM & "'", True)
    Return -1
    EndIf
    GUICtrlSetData($WLIST, "")
    GUICtrlSetData($WLIST, $ITEMSS)
    GUICtrlSetState($WLIST, $GUI_SHOW)
    GUICtrlSetState($WLIST, $GUI_FOCUS); Fokus auf Listbox $WLIST setzen
    EndFunc ;==>COMBOCHANGEDD

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

    Warum du ein Array für $COMBOWARE benutzt ist mir schleierthaft, du erstellst nur 1 Combo zur Warenauswahl. Auch das in der Schleife erstellte Label wird nie benutzt.
    Ich hoffe du räumst dien Script mal ein bischen auf. Voralledingen sind die Variablennamen nichtssagend. Für einen anderen ist dein Script schlecht zu lesen.