Hallo zusammen,
habe nach langer Zeit mal wieder ein kleines Problem, das ich selber nicht lösen kann. Ich möchte gerne alle Items, die ich markiert habe löschen. Nur löscht er mir immer das zweite Item. Ich weiß auch warum. Nach langem suchen und denken bin ich drauf gekommen, dass wenn ein Item gelöscht wird, sich das darunter befindliche Item nach oben verschiebt und dadurch ein neuen Index bekommt.
Ich weiß jetzt nur nicht wie ich das umsetzen soll. Ich hoff das mir einer helfen kann. Danke.
Hier mal ein Testscript:
Spoiler anzeigen
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
#include <GUIListView.au3>
GUICreate("Test", 500, 300)
[/autoit] [autoit][/autoit] [autoit]$ItemMenu = GUICtrlCreateMenu("Datei")
$SubItemMenu = GUICtrlCreateMenuitem("Markierten Einträge löschen", $ItemMenu)
$ListView = GUICtrlCreateListView("Titel|Text", 0, 0, 400, 200, -1, $LVS_EX_GRIDLINES+$LVS_EX_FULLROWSELECT+$LVS_EX_CHECKBOXES)
GUICtrlCreateListViewItem("Test|Test", $ListView)
GUICtrlCreateListViewItem("Test2|Test2", $ListView)
GUICtrlCreateListViewItem("Test3|Test3", $ListView)
GUICtrlCreateListViewItem("Test4|Test4", $ListView)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
$Msg = GUIGetMsg()
Switch $Msg
Case -3
Exit
Case $SubItemMenu
_Loeschen()
EndSwitch
WEnd
Func _Loeschen()
$MELCount = _GUICtrlListView_GetItemCount($ListView) - 1
For $i = 0 To $MELCount
$MELGetText = _GUICtrlListView_GetItemTextArray($ListView, $i)
$MELGetChecked = _GUICtrlListView_GetItemChecked($ListView, $i)
If $MELGetChecked = True Then _GUICtrlListView_DeleteItem($ListView, $i)
Sleep(200)
Next
EndFunc
MfG
MehmeX