Etwas In einer Combo Abspeichern

  • Halloooo

    Brauche mal eure HIlfe Ich Wollte was Über 1 Input In meiner Combo abspeichern.
    Aber das Was Im Input 1 Stehen Soll auch In Einer Ini/txt und wenn Man auf Aktualisieren Geht
    Das Man Das Dann auch in der Combo Sieht also Wie Ne Liste die man eintragen Kann und
    Saven und Deleten Kann ^^ Sowas In Der Art
    Ich Habe es Auch hinbekommen das Der Schreibt was in den Combo ausgehwehlt ist
    Nur Halt Das Saven Und Anzeigen Bekomme ich nit Hin HELPPP MEEEE

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    GUICreate("Manager", 329, 106, 373, 170)
    $Button1 = GUICtrlCreateButton("Aktualisieren", 4, 72, 109, 29)
    $Button2 = GUICtrlCreateButton("Saven", 200, 4, 109, 29)
    $Button3 = GUICtrlCreateButton("Delete", 200, 40, 109, 29)
    $Button4 = GUICtrlCreateButton("Ändern", 128, 72, 111, 29)
    $Button5 = GUICtrlCreateButton("Info", 274, 74, 35, 25)
    $Input1 = GUICtrlCreateInput(IniRead(@ScriptDir & "\Config.ini", "ComboListe", "", ""), 4, 12, 189, 24)
    GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
    $Combo1 = GUICtrlCreateCombo("TEST 1", 4, 40, 189, 25)
    GUISetState(@SW_SHOW)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button4
    if FileExists("Text.txt") then filedelete("Text.txt")
    FileWrite("Text.txt", ""&GuiCtrlRead($Combo1)&"")
    FileCopy("Text.txt", "")
    MsgBox(64,"Ändern" ,"Erfolgreich auf "&GuiCtrlRead($Combo1)&" Gändert",0)
    Case $Button2
    IniWrite(@ScriptDir & "\Config.ini", "ComboListe", "", GUICtrlRead($Input1))
    Case $Button3
    GUICtrlSetData ($Input1, "")
    IniWrite(@ScriptDir & "\Config.ini", "ComboListe", "", "")
    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Unterbilker (24. Juni 2009 um 02:44)

  • Ich weiß nicht, ob ich auf so ein uraltes Thema überhaupt antworten soll oder ob das Problem schon gelöst ist, aber ich habe mir vor einiger Zeit das hier gebastelt.
    Eine Delete Funktion sollte man recht einfach einbauen können.

    Spoiler anzeigen
    [autoit]


    #include <File.au3>
    #include <GUIConstants.au3>

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

    #Region ### START Koda GUI section ### Form=Pfad zur Fenster.kxf
    $Fenster = GUICreate("Auswahl", 252, 66, 193, 125)
    $Auswahl = GUICtrlCreateCombo("Bitte Wählen", 8, 8, 97, 25)
    $Ausgabe = GUICtrlCreateButton("Ausgabe", 16, 32, 83, 25, 0)
    $Neu = GUICtrlCreateInput("Hier Text eingeben", 120, 8, 121, 21)
    $AddButton = GUICtrlCreateButton("Hinzufügen", 128, 32, 107, 25, 0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $MsgBox = ""
    $CheckVar = ""
    $Count = 1

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

    $IniRead = IniReadSection ("data.ini","Combobox")
    $Lines = _FileCountLines ("data.ini")

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

    If IsArray ($IniRead) = True Then
    For $i = 1 To $Lines -1
    $ComboData = $IniRead[$Count][0]
    GUICtrlSetData ($Auswahl,$ComboData&"|")
    $Count = $Count +1
    Next
    EndIf

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

    Do
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $AddButton
    $NeuerText = GUICtrlRead ($Neu)
    $Search = StringInStr ($CheckVar,$NeuerText,0,1)
    If $Search = 0 Then
    GUICtrlSetData ($Auswahl, $NeuerText&"|")
    $CheckVar = $CheckVar&$NeuerText
    IniWrite ("data.ini","Combobox",$NeuerText,"")
    Else
    MsgBox (64,"Fehler","Der Text: '"&$NeuerText&"' ist schon vorhanden. (Groß- /kleinschreibung wird nicht beachtet)")
    EndIf
    Case $Ausgabe
    $Text = GUICtrlRead ($Auswahl)
    MsgBox (64,"Info","Ausgewählter Text: "&$Text)
    EndSwitch
    Until $nMsg = $GUI_EVENT_CLOSE
    Exit

    [/autoit]

    Edit: Hab vergessen das sich der Verzeichnispfad der Fenster.kxf ändert :D Einfach anstatt "Pfad zur Fenster.kxf" einfügen (inkl. Dateinamen)

    Und hier die .kxf:

  • Hi,

    gleich mein 3.Post und wieder mal ein evtl. nicht mehr gebrauchtes Skript.
    Ich poste es trotzdem, vlt. kann es irgendwer mal gebrauchen.
    Anm: Es kann sein, dass ich es etwas umständlich gemacht hab und dass es einen leichteren Lösungsweg gibt.

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=c:\users\chris-comp\desktop\fenster.kxf
    Global $aSprache[7][2] = [ _
    ["Ealendil´s Combo-Lösch-GUI", "Ealendil´s Combo-Delete-GUI"], _
    ["Ausgabe", "Output"], _
    ["Hier Text eingeben", "Enter Text here"], _
    ["Hinzufügen", "Add"], _
    ["Sprachen", "languages"], _
    ["Lösche ausgewähltes Item", "Delete selected item"]]
    $Fenster = GUICreate($aSprache[0][0], 402, 112, 192, 124)
    $Combo = GUICtrlCreateCombo("", 8, 8, 97, 25)
    IniReadSection(@ScriptDir & "\Combo.ini", "Combo")
    If Not @error = 1 Then
    _ItemsToCombo()
    EndIf
    $Ausgabe = GUICtrlCreateButton($aSprache[1][0], 16, 40, 83, 25, 0)
    $Neu = GUICtrlCreateInput($aSprache[2][0], 120, 8, 121, 21)
    $AddButton = GUICtrlCreateButton($aSprache[3][0], 128, 40, 107, 25, 0)
    $Sprachen = GUICtrlCreateGroup($aSprache[4][0], 272, 8, 113, 65)
    $Deutsch_Radio = GUICtrlCreateRadio("Deutsch", 280, 24, 65, 17)
    GUICtrlSetState($Deutsch_Radio, $GUI_CHECKED)
    $English_Radio = GUICtrlCreateRadio("English", 280, 48, 73, 17)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Delete = GUICtrlCreateButton($aSprache[5][0], 40, 72, 145, 17, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    IniWrite(@ScriptDir & "\Combo.ini", "Combo", "0", "Platzhalter"); Damit _ItemsToCombo nicht abschmiert ;)
    IniWrite(@ScriptDir & "\Combo.ini", "Combo", "0.0", "Platzhalter"); Damit _ItemsToCombo nicht abschmiert ;)
    Global $i = 0
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $AddButton
    Local $Ini_Zahl = IniReadSection("Combo.ini", "Combo")
    Local $Input_Read = GUICtrlRead($Neu)
    If GUICtrlRead($Deutsch_Radio) = 1 Then
    If $Input_Read = $aSprache[2][0] Or $Input_Read = "" Then
    MsgBox(0, "Fehler", "Bitte Text eingeben")
    Else
    $hi = _CheckIniHihgest()
    GUICtrlSetData($Combo, $Input_Read)
    IniWrite(@ScriptDir & "\Combo.ini", "Combo", $hi, $Input_Read)
    EndIf
    ElseIf GUICtrlRead($English_Radio) = 1 Or $Input_Read = "" Then
    If $Input_Read = $aSprache[2][1] Then
    MsgBox(0, "Error", "Please type some text in")
    Else
    $hi = _CheckIniHihgest()
    GUICtrlSetData($Combo, $Input_Read)
    IniWrite(@ScriptDir & "\Combo.ini", "Combo", $hi, $Input_Read)
    EndIf
    EndIf
    GUICtrlSetData($Neu, "")
    Case $Deutsch_Radio
    ControlSetText($Fenster, "", $Fenster, $aSprache[0][0])
    GUICtrlSetData($Ausgabe, $aSprache[1][0])
    GUICtrlSetData($Neu, $aSprache[2][0])
    GUICtrlSetData($AddButton, $aSprache[3][0])
    GUICtrlSetData($Sprachen, $aSprache[4][0])
    GUICtrlSetData($Delete, $aSprache[5][0])
    Case $English_Radio
    ControlSetText($Fenster, "", $Fenster, $aSprache[0][1])
    GUICtrlSetData($Ausgabe, $aSprache[1][1])
    GUICtrlSetData($Neu, $aSprache[2][1])
    GUICtrlSetData($AddButton, $aSprache[3][1])
    GUICtrlSetData($Sprachen, $aSprache[4][1])
    GUICtrlSetData($Delete, $aSprache[5][1])
    Case $Ausgabe
    If GUICtrlRead($Deutsch_Radio) = 1 Then
    If GUICtrlRead($Combo) = "" Then
    MsgBox(0, "Fehler", "Nichts ausgewählt")
    Else
    MsgBox(0, "Info", "in der Combo ist folgendes ausgewählt: " & GUICtrlRead($Combo))
    EndIf
    ElseIf GUICtrlRead($English_Radio) = 1 Then
    If GUICtrlRead($Combo) = "" Then
    MsgBox(0, "Error", "Nothing selected")
    Else
    MsgBox(0, "Info", "you selected: " & GUICtrlRead($Combo) & " in the combo.")
    EndIf
    EndIf
    Case $Delete
    $x = _IniRead(GUICtrlRead($Combo))
    IniDelete(@ScriptDir & "\Combo.ini", "Combo", $x)
    _ItemsToCombo()
    GUICtrlSetData($Neu, "")
    EndSwitch
    WEnd
    Func _IniRead($Wert)
    Local $i = 0
    Local $check_ini
    Local $highest = _CheckIniHihgest()
    Do
    $i = $i + 1
    If $i > $highest Then
    MsgBox(0, "Error", "Wert nicht gefunden")
    ExitLoop
    Return -1
    EndIf
    $check_ini = IniRead(@ScriptDir & "\Combo.ini", "Combo", $i, "")
    Until $check_ini = $Wert
    If $check_ini = $Wert Then
    Return $i
    Else
    Return 1
    EndIf
    EndFunc ;==>_IniRead
    Func _CheckIniHihgest()
    Local $ini = IniReadSection(@ScriptDir & "\Combo.ini", "Combo")
    Local $i = 1, $a = 0, $aMax = 0
    Do
    $aMax = $aMax + $ini[$i][0]
    $a = $a + 1
    $i = $i + 1
    Until $a = $ini[0][0]
    If $aMax = 0 Or 1 Then
    $aMax = $aMax + 1
    EndIf
    Return $aMax
    EndFunc ;==>_CheckIniHihgest
    Func _ItemsToCombo()
    Local $ini = IniReadSection(@ScriptDir & "\Combo.ini", "Combo")
    If Not @error = 1 Then
    Local $i = 1, $a = 0
    Local $z = $ini[0][0] - 1
    Local $aItems[$z]
    Local $ini_item
    Local $Ini_Max = _CheckIniHihgest()
    Do
    $ini_item = IniRead(@ScriptDir & "\Combo.ini", "Combo", $i, "")
    If Not $ini_item = "" Then
    $aItems[$a] = $ini_item
    $a = $a + 1
    EndIf
    $i = $i + 1
    Until $i >= $Ini_Max
    $a = 0
    Local $x = UBound($aItems)
    GUICtrlDelete($Combo)
    $Combo = GUICtrlCreateCombo("", 8, 8, 97, 25)
    Do
    GUICtrlSetData($Combo, $aItems[$a])
    $a = $a + 1
    Until $a = $x
    EndIf
    EndFunc ;==>_ItemsToCombo

    [/autoit]

    Wie schon zuvor, Kritik erwünscht.

    Falls fragen zum Skript auftauchen, ich beantworte diese gerne.

    Einmal editiert, zuletzt von Ealendil (14. Januar 2010 um 21:02)