Problem beim Löschen eines Listview Items

  • Hallo

    Der Standpunkt: Ich hab eine Listview in welchem Befehle aufgelistet sind. Diese Befehle (mit den Werten) werden aus einer TXT geladen und in diese Liste eingefügt. Da evtl später noch ein Befehl zwischendurch eingefügt werden muss hab ich eine Inputbox aus welcher der einzufügende Wert ins Listview eingetragen wird. Dieser Eintrag geschiet unterhalb des Markierten ListView Items.

    Diese Funktion hab ich unter anderem mit dem auslesen des Index des markierten LV Items und folgendem Code gemacht:

    [autoit]

    _GUICtrlListView_InsertItem()
    _GUICtrlListView_AddSubItem()

    [/autoit]

    Das einfügen nach dem Eintrag funktionier auch ohne Probleme. Allerdings bleiben diese nachträglich eingefügten Items auch nach einem löschen der kompletten Liste stehen.

    Als Beispiel folgendes Skript:

    Spoiler anzeigen
    [autoit]

    #include <GUIListView.au3>

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

    Opt("GUIOnEventMode", 1)
    $TitelGUI = GUICreate("Test", 420, 405, -1, -1)
    GUICtrlSetOnEvent(-3,"_exit")
    $StatusLabel = GUICtrlCreateLabel("Herzlich Willkommen ", 160, 385)
    GUICtrlCreateLabel("Status:", 110, 385)
    Global $hStart = GUICtrlCreateButton("Hinzufügen", 30, 60, 85, 25)
    GUICtrlSetOnEvent(-1, "_Add")
    Global $hPause = GUICtrlCreateButton("Löschen", 30, 90, 85, 25)
    GUICtrlSetOnEvent(-1, "_Del")
    GUICtrlCreateButton("Beenden", 30, 250, 85, 25)
    GUICtrlSetOnEvent(-1, "_exit")
    $LV = GUICtrlCreateListView("Befehl|Wert(e)", 165, 30, 250, 350)
    For $i = 0 to 5
    GUICtrlCreateListViewItem("Test|"&$i,$LV)
    next
    _GUICtrlListView_SetColumnWidth($LV , 0, 80)
    _GUICtrlListView_SetColumnWidth($LV , 1, 165)
    GUISetState(@SW_SHOW,$TitelGUI)
    while 1
    WEnd
    Func _Add()
    _GUICtrlListView_InsertItem($LV ,"Test",$i)
    _GUICtrlListView_AddSubItem($LV ,$i,$i,1)
    $i +=1
    EndFunc
    func _Del()
    _GUICtrlListView_DeleteAllItems($LV)
    $i = 0
    EndFunc
    Func _exit()
    Exit
    EndFunc

    [/autoit]


    Funktion sollte klar erkennbar sein.

    Mein Frage: Wie bekomm ich diese Einträge aus meiner Listview wieder raus. Am besten komplett mit allen anderen zusammen.

    Wie immer vielen Dank für eine schnelle und hilfreiche Antwort. :thumbup:

    Gruß Prixma

    Einmal editiert, zuletzt von Prixma (18. Januar 2011 um 14:54)

    • Offizieller Beitrag

    Wenn Du Listview-Einträge mittels der Listview-UDF erstellst, musst Du das Handle zum löschen benutzen:

    Spoiler anzeigen
    [autoit]


    #include <GUIListView.au3>

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

    Opt("GUIOnEventMode", 1)
    $TitelGUI = GUICreate("Test", 420, 405, -1, -1)
    GUICtrlSetOnEvent(-3, "_exit")
    $StatusLabel = GUICtrlCreateLabel("Herzlich Willkommen ", 160, 385)
    GUICtrlCreateLabel("Status:", 110, 385)
    Global $hStart = GUICtrlCreateButton("Hinzufügen", 30, 60, 85, 25)
    GUICtrlSetOnEvent(-1, "_Add")
    Global $hPause = GUICtrlCreateButton("Löschen", 30, 90, 85, 25)
    GUICtrlSetOnEvent(-1, "_Del")
    GUICtrlCreateButton("Beenden", 30, 250, 85, 25)
    GUICtrlSetOnEvent(-1, "_exit")
    $LV = GUICtrlCreateListView("Befehl|Wert(e)", 165, 30, 250, 350)
    For $i = 0 To 5
    GUICtrlCreateListViewItem("Test|" & $i, $LV)
    Next
    _GUICtrlListView_SetColumnWidth($LV, 0, 80)
    _GUICtrlListView_SetColumnWidth($LV, 1, 165)
    GUISetState(@SW_SHOW, $TitelGUI)
    While Sleep(100) ; <- Im OnEventMode muss hier ein Sleep rein, sonst hast Du 100% Prozessorauslastung
    WEnd
    Func _Add()
    _GUICtrlListView_InsertItem($LV, "Test", $i)
    _GUICtrlListView_AddSubItem($LV, $i, $i, 1)
    $i += 1
    EndFunc ;==>_Add
    Func _Del()
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($LV)) ; <- Hier das Handle benutzen, wenn Du Listview-Einträge mit der Listview-UDF erstellst.
    $i = 0
    EndFunc ;==>_Del
    Func _exit()
    Exit
    EndFunc ;==>_exit

    [/autoit]