Combobox-Einträge durchlaufen (bei Abfrage)

  • Hi. Ich bins wieder mit meinem altbekannten Programm, zu dem ich schon 2 oder 3 mal Hilfe gebraucht habe.
    Diesmal hab ich ebenfalls keinen blassen Schimmer, wie ich das anstellen könnte bzw. steh voll aufm Schlauch :(

    Es geht, wie oben im Titel ebschrieben, um die Stelle in der While 1-Schleife der GUI, die sich um die Combobox kümmert.
    Hier der Quellcode:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=icon.ico
    ;#AutoIt3Wrapper_Compression=4
    #AutoIt3Wrapper_UseUpx=n
    #AutoIt3Wrapper_Res_Comment=AutoItstall
    #AutoIt3Wrapper_Res_Description=Installationsmenü
    #AutoIt3Wrapper_Res_Fileversion=0.0.0.1
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

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

    AutoitSetOption("TrayIconHide" ,1)

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

    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <TabConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiTab.au3>
    #include <array.au3>

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

    If(IniRead("settings.ini", "Einstellungen", "Hinweise", "ja")="ja") Then
    MsgBox(48,"Wichtige Hinweise","1.) Sie sollten Hardwaretreiber vor der Software installieren! Die Hardwaretreiber finden Sie auf den Installationsmedien, die der Hardware beim Kauf beiliegen." & @CRLF & @CRLF & "2.) Sie sollten ihre Virenschutzsoftware während den automatische Installationen unbedingt deaktivieren! Es wird nur installiert und keine Anwendung gestartet. Überprüfen Sie gegebenenfalls nach Abschluss aller Installationen ihren Computer durch einen manuellen Suchvorgang nach Viren." & @CRLF & @CRLF & "3.) Es werden Administratorrechte benötigt, unter Windows Vista und neueren Windows-Betriebssystemen muss UAC (User Account Control) deaktiviert werden, dies kann nach diesem Hinweis über den Konfigurieren-Button rechts oben im Menü geschehen." & @CRLF & @CRLF & "4.) Während den automatischen Installationen sollten Sie nicht am Computer arbeiten!" & @CRLF & @CRLF & "5.) Nach Abschluss aller automatischen Installationen erfolgt ein automatischer Neustart.")
    EndIf

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

    Dim $onlineoffline
    $ping = Ping("www.google.com")
    If $ping > 0 then
    $onlineoffline = "data\website_online.jpg"
    Else
    $onlineoffline = "data\website_offline.jpg"
    EndIf
    $Form2 = GUICreate("AutoItstall", 1024, 650, -1, -1)
    $Pic15 = GUICtrlCreatePic("data\header.jpg", 0, 0, 174, 48)
    ;GUICtrlSetTip(-1, "Website im Browser öffnen")
    GUICtrlSetCursor (-1, 0)
    $Pic16 = GUICtrlCreatePic("data\background.jpg", 174, 0, 706, 48)
    $Help = GUICtrlCreatePic("data\background_thin.jpg", 880, 0, 48, 48)
    $About = GUICtrlCreatePic("data\about.jpg", 928, 0, 48, 48)
    GUICtrlSetTip(-1, "Über dieses Programm")
    GUICtrlSetCursor (-1, 4)
    $Combo1 = GUICtrlCreateCombo("benutzerdefiniert", 648, 56, 369, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL,$CBS_DROPDOWNLIST))
    $Label33 = GUICtrlCreateLabel("Fertige Zusammenstellung auswählen", 464, 61, 181, 17)
    $Install_Markierte = GUICtrlCreateButton("Installiere markierte Software jetzt!", 8, 56, 193, 25)
    $Settings = GUICtrlCreatePic("data\settings.jpg", 976, 0, 48, 48)
    GUICtrlSetTip(-1, "Einstellungen")
    GUICtrlSetCursor (-1, 0)
    $PageControl1 = GUICtrlCreateTab(8, 88, 1012, 557)
    GUICtrlSetFont(-1, 8, 400, 0, "MS Sans Serif")

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

    $AnzKategorien=IniRead("settings.ini","Einstellungen","Kategorien","1")
    $AnzZusammenstellungen=IniRead("settings.ini","Einstellungen","Zusammenstellungen","1")
    ; An Stelle [n][1] im Array steht ein Name, an Stelle [n+1][1] steht der Pfad zur Konfigurationsdatei, für alle ungeraden n.
    $Kategorien=IniReadSection("settings.ini","Kategorien")
    ; An Stelle [n][1] im Array steht ein Name, an Stelle [n+1][1] steht die Auswahl der Daten
    $tempZusammenstellungen=IniReadSection("settings.ini","Zusammenstellungen")
    ; Legt die Kategorien als Reiter-Array an.
    Dim $TabSheetKategorien[($AnzKategorien*2)-1]
    ; Legt die in jedem Reiter vorhandenen Elemente an...
    Dim $AktuellBildBox[$AnzKategorien]
    Dim $AktuellBild[$AnzKategorien]
    Dim $Software[$AnzKategorien]
    Dim $AktuellBeschreibungBox[$AnzKategorien]
    Dim $AktuellBeschreibung[$AnzKategorien]
    Dim $Beschreibung[$AnzKategorien]
    Dim $Grafik[$AnzKategorien]
    Dim $AktuellWebsite[$AnzKategorien]
    Dim $AktuellSprache[$AnzKategorien]
    Dim $AktuellInstall[$AnzKategorien]
    Dim $AktuellFreeware[$AnzKategorien]
    Dim $AktuellParameter[$AnzKategorien]
    Dim $AnzElemente[$AnzKategorien]
    Dim $AktuellWebsiteGrafik[$AnzKategorien]
    Dim $AktuellInstallGrafik[$AnzKategorien]
    ;$IchbaumirmeinenStringfuerdieComboboxhaltselber
    Dim $IbmmSfdCbhs
    $IbmmSfdCbhs=""
    ;[X][0]=Name, [X][1]=Daten
    Dim $Zusammenstellungen[$AnzZusammenstellungen][2]

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

    ;26 mögliche Elemente je Kategorie sollten reichen - passen ja eh nur 26 auf eine Seite...
    Dim $Checkboxen[$AnzKategorien][26]
    Dim $Icons[$AnzKategorien][26]
    Dim $Titel[$AnzKategorien][26]
    Dim $Hersteller[$AnzKategorien][26]
    Dim $ElementeBeschreibung[$AnzKategorien][26]
    Dim $ElementeBild[$AnzKategorien][26]
    Dim $ElementeWebsite[$AnzKategorien][26]
    Dim $ElementeSprache[$AnzKategorien][26]
    Dim $ElementeFreeware[$AnzKategorien][26]
    Dim $ElementeInstall[$AnzKategorien][26]
    Dim $ElementeParameter[$AnzKategorien][26]

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

    $lw1=0
    $lw2=0
    While ($lw1 < ($AnzKategorien*2))
    $TabSheetKategorien[$lw1] = GUICtrlCreateTabItem($Kategorien[$lw1+1][1])
    $inifile=$Kategorien[$lw1+2][1]

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

    $Beschreibung[$lw2] = GUICtrlCreateEdit("", 16, 120, 489, 65, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
    $file0 = FileOpen(IniRead($inifile,"Daten","Beschreibung","fehlt.txt"), 0)
    GUICtrlSetData($Beschreibung[$lw2], FileRead($file0))
    FileClose($file0)

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

    $Grafik[$lw2] = GuiCtrlCreatePic(IniRead($inifile, "Daten", "Grafik", ""), 512, 120, 64, 64)

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

    $Software[$lw2] = GUICtrlCreateGroup("Software", 16, 191, 561, 442)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    $AktuellBildBox[$lw2] = GUICtrlCreateGroup("Logo/Bild", 592, 120, 337, 277)
    $AktuellBild[$lw2] = GUICtrlCreatePic("", 600, 144, 320, 240)
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    $AktuellBeschreibungBox[$lw2] = GUICtrlCreateGroup("Beschreibung", 592, 416, 417, 217)
    $AktuellBeschreibung[$lw2] = GUICtrlCreateEdit("", 600, 433, 401, 193, BitOR($ES_AUTOVSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL))
    GUICtrlCreateGroup("", -99, -99, 1, 1)

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

    $AktuellWebsiteGrafik[$lw2] = GUICtrlCreatePic($onlineoffline, 950, 130, 48, 48)
    GUICtrlSetTip(-1, "Website im Browser öffnen")
    GUICtrlSetCursor (-1, 0)
    GUICtrlSetState(-1, $GUI_HIDE)
    $AktuellSprache[$lw2] = GUICtrlCreatePic("data\german.jpg", 950, 200, 48, 48)
    GUICtrlSetTip(-1, "Sprache: deutsch")
    GUICtrlSetState(-1, $GUI_HIDE)
    $AktuellFreeware[$lw2] = GUICtrlCreatePic("data\freeware.jpg", 950, 270, 48, 48)
    GUICtrlSetTip(-1, "Keine Freeware!")
    GUICtrlSetCursor (-1, 4)
    GUICtrlSetState(-1, $GUI_HIDE)
    $AktuellInstallGrafik[$lw2] = GUICtrlCreatePic("data\install.jpg", 950, 340, 48, 48)
    GUICtrlSetTip(-1, "Jetzt installieren!")
    GUICtrlSetCursor (-1, 0)
    GUICtrlSetState(-1, $GUI_HIDE)

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

    ;Eintragen der Elemente in die Softwareliste
    $AnzElemente[$lw2] = IniRead($inifile, "Daten", "Elemente", 0)
    $lw3=0
    While ($lw3 < $AnzElemente[$lw2])
    ;...
    $temp = Mod($lw3, 2)
    If ($temp == 0) Then
    ;linke Spalte
    $Checkboxen[$lw2][$lw3] = GUICtrlCreateCheckbox("", 24, Floor(223+40*($lw3/2)), 16, 16)
    ;GUICtrlSetState(-1, $GUI_HIDE)
    $Icons[$lw2][$lw3] = GUICtrlCreateIcon(IniRead($inifile, "Element"&$lw3+1, "Icon", "data\setup.ico"), -1, 40, Floor(215+40*($lw3/2)), 32, 32)
    $Hersteller[$lw2][$lw3] = GUICtrlCreateLabel(IniRead($inifile, "Element"&$lw3+1, "Hersteller", "unbekannter Hersteller"), 80, Floor(215+40*($lw3/2)))
    $Titel[$lw2][$lw3] = GUICtrlCreateLabel(IniRead($inifile, "Element"&$lw3+1, "Name", "?")&" v"&IniRead($inifile, "Element"&$lw3+1, "Version", "1"), 80, Floor(231+40*($lw3/2)))
    Else
    ;Rechte Spalte
    $Checkboxen[$lw2][$lw3] = GUICtrlCreateCheckbox("", 296, 203+40*($lw3/2), 16, 16)
    ;GUICtrlSetState(-1, $GUI_HIDE)
    $Icons[$lw2][$lw3] = GUICtrlCreateIcon(IniRead($inifile, "Element"&$lw3+1, "Icon", "data\setup.ico"), -1, 296, 195+40*($lw3/2), 32, 32)
    $Hersteller[$lw2][$lw3] = GUICtrlCreateLabel(IniRead($inifile, "Element"&$lw3+1, "Hersteller", "unbekannter Hersteller"), 352, 195+40*($lw3/2))
    $Titel[$lw2][$lw3] = GUICtrlCreateLabel(IniRead($inifile, "Element"&$lw3+1, "Name", "?")&" v"&IniRead($inifile, "Element"&$lw3+1, "Version", "1"), 352, Floor(211+40*($lw3/2)))
    EndIf
    $file1 = FileOpen(IniRead($inifile, "Element"&$lw3+1, "Beschreibung", "fehlt.txt"), 0)
    $ElementeBeschreibung[$lw2][$lw3] = FileRead($file1)
    FileClose($file1)
    $ElementeBild[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Grafik", "")
    $ElementeWebsite[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "URL", "http://www.autoit.de")
    $ElementeSprache[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Sprache", "en")
    $ElementeFreeware[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Freeware", "ja")
    $ElementeInstall[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Setupdatei", "data\dummy.exe")
    $ElementeParameter[$lw2][$lw3] = IniRead($inifile, "Element"&$lw3+1, "Parameter", "")
    ;Laufvariable für die Elemente erhöhen
    $lw3=$lw3+1
    WEnd
    ;übriger Code für die einzelnen Kategorien
    ;Erhöhen der Laufvariablen, $lw1 zählt im Auslesearray, $lw2 zählt in den Zielarrays, beide zählen in den Kategorien hoch.
    $lw1=$lw1+2
    $lw2=$lw2+1
    WEnd
    GUICtrlCreateTabItem("")

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

    ;Combobox-Daten auslesen
    $lw1=0 ;geht bis Anzahl Zusammenstellungen mal 2 (Siehe ini-Struktur)
    $lw2=0 ;geht bis tatsächliche Anzahl Zusammenstellungen
    ; An Stelle [n][1] im Array steht ein Name, an Stelle [n+1][1] steht die Auswahl der Daten
    while ($lw1 < ($AnzZusammenstellungen*2))
    ;String für die Combobox bauen
    $IbmmSfdCbhs = $IbmmSfdCbhs & $tempZusammenstellungen[$lw1][1] & "|"
    ;Daten einlesen zur späteren bequemeren Verwendung...
    $Zusammenstellungen[$lw2][0] = $$tempZusammenstellungen[$lw1][1]
    $Zusammenstellungen[$lw2][1] = $$tempZusammenstellungen[$lw1+1][1]
    $lw1=$lw1+2
    $lw2=$lw2+1
    WEnd
    ;Den letzten | entfernen...
    $temp1 = StringLeft($IbmmSfdCbhs,StringLen($IbmmSfdCbhs))
    GUICtrlSetData($Combo1, $temp1, "benutzerdefiniert")
    GUISetState(@SW_SHOW)

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

    $iAktTab = 0
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Install_Markierte
    _InstallNow()
    Case $Combo1
    Switch $Combo1
    Case "benutzerdefiniert"
    ; nix machen ;)
    Case $Zusammenstellungen[0][0] To $Zusammenstellungen[$AnzZusammenstellungen-1][0]
    ; Haken (Checkboxen) setzen, aber wie?
    EndSwitch
    Case $PageControl1
    $iAktTab = _GUICtrlTab_GetCurSel($PageControl1)
    Case $Checkboxen[$iAktTab][0] To $Titel[$iAktTab][$AnzElemente[$iAktTab] - 1]
    ConsoleWrite("Ksg-ID: " & $nMsg & @TAB)
    if mod($nMsg - $Checkboxen[$iAktTab][0],4) Then
    $iAktCheckBox = -1 ;es kann keine Checkbox sein
    else
    $iAktCheckBox = ($nMsg - $Checkboxen[$iAktTab][0]) /4
    GUICtrlSetData($Combo1, "benutzerdefiniert")
    EndIf
    ConsoleWrite("Checkbox: " & $iAktCheckBox & @TAB)
    if mod($nMsg - $Icons[$iAktTab][0],4) Then
    $iAktIcon = -1 ;es kann kein Icon sein
    else
    $iAktIcon = ($nMsg - $Icons[$iAktTab][0]) /4
    _UnMarkAll($iAktTab, $AnzElemente[$iAktTab])
    _SelectOne($iAktTab, $iAktIcon)
    EndIf
    ConsoleWrite("Icon: " & $iAktIcon & @TAB)
    if mod($nMsg - $Hersteller[$iAktTab][0],4) Then
    $iAktHersteller = -1 ;es kann kein Hersteller sein
    else
    $iAktHersteller = ($nMsg - $Hersteller[$iAktTab][0]) /4
    _UnMarkAll($iAktTab, $AnzElemente[$iAktTab])
    _SelectOne($iAktTab, $iAktHersteller)
    EndIf
    ConsoleWrite("Hersteller: " & $iAktHersteller & @TAB)
    if mod($nMsg - $Titel[$iAktTab][0],4) Then
    $iAktTitel = -1 ;es kann kein Titel sein
    else
    $iAktTitel = ($nMsg - $Titel[$iAktTab][0]) /4
    _UnMarkAll($iAktTab, $AnzElemente[$iAktTab])
    _SelectOne($iAktTab, $iAktTitel)
    EndIf
    ConsoleWrite("Titel: " & $iAktTitel & @CRLF)
    case $AktuellInstallGrafik[$iAktTab]
    GUISetState(@SW_HIDE)
    RunWait($AktuellInstall[$iAktTab]&" "&$AktuellParameter[$iAktTab])
    GUISetState(@SW_SHOW)
    case $AktuellWebsiteGrafik[$iAktTab]
    ShellExecute($AktuellWebsite[$iAktTab])
    case $AktuellFreeware[$iAktTab]
    MsgBox(64,"Keine Freeware!","Die (dauerhafte) Benutzung dieser Software ist kostenpflichtig!"&@CRLF&"Sie können Ihre Registrierungsinformationen beim ersten Programmstart eingeben.")
    EndSwitch
    WEnd

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

    Func _UnMarkAll($cat, $anzelements)
    $temp=0
    While ($temp < $anzelements+1)
    GUICtrlSetBkColor($Hersteller[$cat][$temp], $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetBkColor($Titel[$cat][$temp], $GUI_BKCOLOR_TRANSPARENT)
    $temp=$temp+1
    WEnd
    GUICtrlSetState($AktuellFreeware[$cat], $GUI_HIDE)
    GUICtrlSetState($AktuellSprache[$cat], $GUI_HIDE)
    EndFunc

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

    Func _SelectOne($cat, $element)
    GUICtrlSetBkColor($Hersteller[$cat][$element], 0x7A96DF)
    GUICtrlSetBkColor($Titel[$cat][$element], 0x7A96DF)
    GUICtrlSetData($AktuellBeschreibung[$cat], $ElementeBeschreibung[$cat][$element])
    GUICtrlSetImage($AktuellBild[$cat], $ElementeBild[$cat][$element])
    $AktuellInstall[$cat] = $ElementeInstall[$cat][$element]
    $AktuellWebsite[$cat] = $ElementeWebsite[$cat][$element]
    $AktuellParameter[$cat] = $ElementeParameter[$cat][$element]
    If ($ElementeFreeware[$cat][$element] <> "ja") Then
    GUICtrlSetState($AktuellFreeware[$cat], $GUI_SHOW)
    EndIf
    If (StringCompare($ElementeSprache[$cat][$element], "de")=0) Then
    GUICtrlSetImage($AktuellSprache[$cat], "data\german.jpg")
    GUICtrlSetState($AktuellSprache[$cat], $GUI_SHOW)
    GUICtrlSetTip($AktuellSprache[$cat], "Sprache: deutsch")
    EndIf
    If (StringCompare($ElementeSprache[$cat][$element], "en")=0) Then
    GUICtrlSetImage($AktuellSprache[$cat], "data\english.jpg")
    GUICtrlSetState($AktuellSprache[$cat], $GUI_SHOW)
    GUICtrlSetTip($AktuellSprache[$cat], "Sprache: englisch")
    EndIf
    GUICtrlSetState($AktuellInstallGrafik[$cat], $GUI_SHOW)
    GUICtrlSetState($AktuellWebsiteGrafik[$cat], $GUI_SHOW)
    EndFunc

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

    Func _InstallNow()
    ; Schön aufbereiten in der Darstellung
    $lw1=0 ; Laufvariable für Kategorien
    $lw2=0 ; Laufvariable für Programme
    While ($lw1 < $AnzKategorien)
    While ($lw2 < $AnzElemente[$lw1])
    If (GUICtrlRead($Checkboxen[$lw1][$lw2]) = $GUI_CHECKED) Then
    ; Farbe ändern auf rot
    GUICtrlSetData($Icons[$lw1][$lw2], "data\not_installed.ico")
    GUICtrlSetColor($Titel[$lw1][$lw2], 0xff0000)
    GUICtrlSetColor($Hersteller[$lw1][$lw2], 0xff0000)
    GUICtrlSetState($Checkboxen[$lw1][$lw2], $GUI_DISABLE)
    Else;If (GUICtrlRead($Checkboxen[$lw1][$lw2]) = $GUI_UNCHECKED) Then
    ; ausgrauen
    GUICtrlSetData($Icons[$lw1][$lw2], "data\not_install.ico")
    GUICtrlSetColor($Titel[$lw1][$lw2], 0xe2e2e2)
    GUICtrlSetColor($Hersteller[$lw1][$lw2], 0xe2e2e2)
    GUICtrlSetState($Checkboxen[$lw1][$lw2], $GUI_DISABLE)
    EndIf
    $lw2 = $lw2 + 1
    WEnd
    $lw1 = $lw1+1
    $lw2 = 0
    WEnd
    ; Nun wird installiert!
    $lw1=0 ; Reinitialisierung Laufvariable für Kategorien
    $lw2=0 ; Reinitialisierung Laufvariable für Programme
    While ($lw1 < $AnzKategorien)
    GUISwitch($Form2, $TabSheetKategorien[$lw1])
    if ($lw1 <> 1) Then
    While ($lw2 < $AnzElemente[$lw1])
    If (GUICtrlRead($Checkboxen[$lw1][$lw2]) = $GUI_CHECKED) Then
    RunWait($ElementeInstall[$lw1][$lw2]&" "&$ElementeParameter[$lw1][$lw2])
    ; Farbe ändern auf grün
    GUICtrlSetData($Icons[$lw1][$lw2], "data\installed.ico")
    GUICtrlSetColor($Titel[$lw1][$lw2], 0x00ff00)
    GUICtrlSetColor($Hersteller[$lw1][$lw2], 0x00ff00)
    EndIf
    $lw2 = $lw2 + 1
    WEnd
    ElseIf ($lw1 = 1) Then
    ; nix machen, wird erst als letzte durchlaufen :P
    EndIf
    $lw1 = $lw1+1
    $lw2 = 0
    WEnd
    ; Nun wird die oben ausgelassene Kategorie nachgeholt.
    $lw1 = 1
    While ($lw2 < $AnzElemente[$lw1])
    If (GUICtrlRead($Checkboxen[$lw1][$lw2]) = $GUI_CHECKED) Then
    RunWait($ElementeInstall[$lw1][$lw2]&" "&$ElementeParameter[$lw1][$lw2])
    ; Farbe ändern auf grün
    GUICtrlSetData($Icons[$lw1][$lw2], "data\installed.ico")
    GUICtrlSetColor($Titel[$lw1][$lw2], 0x00ff00)
    GUICtrlSetColor($Hersteller[$lw1][$lw2], 0x00ff00)
    EndIf
    $lw2 = $lw2 + 1
    WEnd
    GUISetState(@SW_HIDE, $Form2)

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Neustart", 186, 82, -1, -1)
    $Form1Label1 = GUICtrlCreateLabel("Installationen abgeschlossen.", 8, 8, 143, 17)
    $Form1Label2 = GUICtrlCreateLabel("Der Computer wird in", 8, 32, 102, 17)
    $Form1Label3 = GUICtrlCreateLabel("25", 112, 32, 16, 17)
    $Form1Label4 = GUICtrlCreateLabel("Sekunden", 128, 32, 53, 17)
    $Form1Label5 = GUICtrlCreateLabel("heruntergefahren und neu gestartet!", 8, 56, 174, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    $countdown = 25
    While ($countdown > 0)
    sleep(999)
    GUICtrlSetData($Form1Label3, $countdown&"")
    $countdown = $countdown - 1
    WEnd
    GUISetState(@SW_HIDE, $Form1)
    Shutdown(6)
    ;While 1
    ;$nMsg = GUIGetMsg()
    ;Switch $nMsg
    ; Case $GUI_EVENT_CLOSE
    ; Exit
    ;
    ;EndSwitch
    ;WEnd
    EndFunc

    [/autoit]


    So sehen die Daten der Ini-Datei aus:
    ;Elemente der Kategorie, mit ; voneinander getrennt. Kategorien mit | voneinander getrennt.
    Zusammenstellung1Name=Alle Freeware
    Zusammenstellung1Auswahl=1;2;3;4;5|3;6

    Meine erste Idee war mit StringSplit, was vermutlich auch gehen würde, wenn ich wüsste, welcher Eintrag in der Combobox ausgewählt ist und welcher Zahl das in meinem Array entspricht, das ja so aufgebaut ist: ;[X][0]=Name, [X][1]=Daten Vielleicht tuts mir irgend einer Suche, dass ich den Index rausbekomme, aber ich habe ja nicht mal den Namen, also was in der Combobox gerade ausgewählt ist :(

    PS: Kleine Orientierungshilfe in dem langen Code:
    Zeilen 1-95: Deklarationen etc.
    Zeilen 95-195: Initialisierung der Variablen
    Zeilen 195-255: While 1-Teil der GUI
    Ab zeile 255: Hilfsroutinen

    3 Mal editiert, zuletzt von Weisgarnix (25. Mai 2011 um 02:12)

  • ..aber nur wenn du in den 3 Tagen nicht herausgefunden hast, daß in der Hilfe steht, daß der angewählte Eintrag einer Combobox mit GUICtrlRead() erhalten wird..
    [/Push]

    (Ich) benutze stets die aktuelle (Beta) und SciTE..

  • Hallo WeisGarNix,

    du solltest vor allem ein kompilierbares Skript einstellen, denn folgende Fehler:

    Code
    >Running AU3Check (1.54.19.0)  from:C:\Programme\AutoIt3
    C:\Programme\AutoIt3\Examples\Tests\cboWeisgarnix.au3(184,44) : ERROR: syntax error (illegal character)
                $Zusammenstellungen[$lw2][0] = $
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\cboWeisgarnix.au3(185,44) : ERROR: syntax error (illegal character)
                $Zusammenstellungen[$lw2][1] = $
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Examples\Tests\cboWeisgarnix.au3 - 2 error(s), 0 warning(s)
    !>20:11:10 AU3Check ended.rc:2
    >Exit code: 0    Time: 4.905

    werden gemeldet. Ausserdem solltest du auch die komplette INI und die anderen benötigten Dateien mit einstellen, dann hilft ja vielleicht jemand.

    Bis dahin ein kleines Beispiel-Programm mit ähnlichem Lösungsansatz:

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GuiComboBox.au3>
    #include <GUIConstantsEx.au3>
    #include <array.au3>
    #include <File.au3>
    #Include <GuiComboBox.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", 5, 40)
    GUICtrlSetState(-1,$Gui_DISABLE)
    GUICtrlSetTip(-1,"MsgBox zeigen")
    $idBtnAll = GUICtrlCreateButton("&alle auslesen", 50, 40) ;read all
    GUICtrlSetTip(-1,"Programm beenden")
    $idBtnExit = GUICtrlCreateButton("Be&enden", 175, 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))
    case $idBtnAll
    $sKFZ = _GUICtrlComboBox_GetList($idCboKFZ)
    MsgBox(0,"KFZ",$sKFZ)
    EndSwitch
    WEnd

    [/autoit]

    mfg autoBert


  • Hi. Danke dir erstmal, ich werde versuchen, es zu verstehen.
    Das mit den beiden $-Zeichen zu viel bitte ich zu entschuldigen, bei mir hab ichs schon rausgenommen, ich dachte, ich hätte das heir auch korrigiert, aber scheinbar fehlgedacht.