Mehrfacheinträge in Listbox

  • Hallo.

    Ich habe hier eine Listbox:


    [autoit]

    $buildlist = GUICtrlCreateList("", 950, 140, 200, 300, $WS_BORDER)

    [/autoit]


    Die fülle ich nach und nach mit


    [autoit]

    GUICtrlSetData($buildlist, $building)

    [/autoit]


    Mein Problem ist:
    Wenn ich nun zweimal genau das gleiche rein haben will tut er es nur einmal rein, beim zweiten versuch es hinzuzufügen wird nur das erste ausgewählt.
    wie kann ich mehrmals das gleiche hinzufügen?

    Einmal editiert, zuletzt von tkausl (30. September 2009 um 18:25)

  • Wo ist da der SINN ?

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Der sinn ist eigentlich nicht weiter wichtig aber ich erkläre ihn trotzdem:
    es soll eine Bauliste werden und es wäre sinnfrei wenn man nur einmal jedes objekt darin einklicken könnte.

  • Hallo tkausl,

    auch im RL existiert doch ein Gebäude nur einmal. Dann musst du schon mindestens ein weiteres Merkmal hinzugeben (z.B. Wohnung 1), aber stell doch mal dein komplettes Skript ein vielleicht findet sich ja eine Lösung,

    mfg (Auto)bert

  • Natürlich Du hast völlig recht, jedes gebäude existiert nur einmal.
    das problem ist nur, fals ich jetzt 3 mal ausbaue und es steht in der liste:

    Haus Stufe 1
    Haus Stufe 2
    Haus Stufe 3

    dann wählt man Haus Stufe 2 aus und löscht es aus der liste (will ich auch einbauen, hoffe das ist möglich) dann steht nurnoch
    Haus Stufe 1
    Haus Stufe 3

    und das will ich verhindern indem ich die Stufe einfach weglasse.

  • Meinst Du es so?
    autoit.de/wcf/attachment/6227/

    So kannst Du in ein $List Daten eintragen, löschen und die Liste speichern. Aber die Frage ist, meinst Du das mit "Doppelbegriff", so wie im Bild rechts zu lesen?

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Richtig, das meine ich.
    ich bekomme es HIN, wenn ich direkt alle gleichzeitig hinzufüge (mit Haus|Haus|Haus ist 3 mal haus in der liste) aber wenn ich nacheinander jedesmal "haus" hinzufüge wird beim 2. mal nurnoch das eine existierende haus markiert.

  • Die Lsg. kommt von Raupi, XovoxKingdom und Oscar.

    Sie entstand als ich eine Frage in diese Richtung hatte.

    Schaut so aus:

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    ; Schleife DANK AutoIt entstanden und eingebaut.
    ; danke an: Raupi, XovoxKingdom, Oscar,

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

    #include <File.au3>
    #include <Array.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListBox.au3>
    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <WindowsConstants.au3>
    $Form1 = GUICreate("Musterumgebung", 500, 170, -1, -1) ; erstellt das fenster

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

    $Button1 = GUICtrlCreateButton("Hinzufügen", 20, 64, 130, 25, 0) ; Button +
    $Button2 = GUICtrlCreateButton("Löschen", 165, 64, 130, 25, 0) ; Button -
    $Button3 = GUICtrlCreateButton("Liste löschen", 165, 97, 130, 25, 0) ; Button L-Clear
    $Button4 = GUICtrlCreateButton("Liste einlesen", 20, 97, 130, 25, 0) ; Button L-Read
    $Button5 = GUICtrlCreateButton("Liste speichern", 20, 130, 275, 25, 0) ; ButtonL-Save
    $Input1 = GUICtrlCreateInput("", 20, 32, 275, 25) ; Input
    $Label1 = GUICtrlCreateLabel("Musterumgebung", 20, 10, 228, 17) ; Info zur CB
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif") ; Schrift
    $List1 = GUICtrlCreateList("", 300, 32, 190, 125) ; Gr. des L

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Button3 ; Alles löschen aus der Liste
    GUICtrlSetData($List1, "")

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

    Case $Button2 ; Markierten Eintrag aus der Liste löschen
    $iSel = _GUICtrlListBox_GetCurSel($List1)
    _GUICtrlListBox_DeleteString($List1, $iSel)

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

    Case $Button1 ; Eintrag zur Liste hinzufügen
    GUICtrlSetData($List1, GUICtrlRead($Input1) & "|")

    Case $Button4 ; Einträge in einer Textdatei speichern durch "Komma"
    If FileExists(@ScriptDir & "\spei_01.txt") Then
    $sTmp = FileRead(@ScriptDir & "\spei_01.txt")
    $aTmp = StringSplit($sTmp, ",")
    If Not @error Then
    For $i = 1 To $aTmp[0]
    _GUICtrlListBox_AddString($List1, $aTmp[$i])
    Next
    EndIf
    EndIf

    Case $Button5 ; Liste in eine Textdatei speichern
    $sTmp = ""
    $iCount = _GUICtrlListBox_GetCount($List1) - 1
    For $i = 0 To $iCount
    $sTmp &= _GUICtrlListBox_GetText($List1, $i) & ","; Einträge mit nachfolgenden , an den String anhängen
    Next
    $sTmp = StringTrimRight($sTmp, 1); letztes Komma entfernen
    $Datei = FileOpen(@ScriptDir & "\spei_01.txt", 2); Datei im Überschreibmodus öffen
    FileWrite($Datei, $sTmp)
    FileClose($Datei)

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

    EndSwitch
    WEnd

    [/autoit]

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr