_GUICtrlListView_DeleteAllItems() klappt nicht

  • Wieso werden die bei erneutem Aufruf der Funktion die alten ListViewItems nicht gelöscht?

    Spoiler anzeigen
    [autoit]


    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <Process.au3>

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

    Global $windows = "Auto Windowmanager"

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

    $hWnd = GUICreate($windows, 500, 400)

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

    Global $ListView = GUICtrlCreateListView("Fenstername|Datei", 10, 10, 480, 250)
    _GUICtrlListView_SetColumnWidth($ListView, 0, 300)
    _GUICtrlListView_SetColumnWidth($ListView, 1, 175)

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

    GUISetState(@SW_SHOW)

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

    ;_ListWindows()

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

    AdlibRegister("_ListWindows", 1000)

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

    While True
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    AdlibUnRegister()
    EndSwitch
    WEnd

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

    Func _ListWindows()
    _GUICtrlListView_DeleteAllItems($ListView); Funzt nicht!!!
    $windows = WinList()
    For $i = 1 To $windows[0][0]
    If $windows[$i][0] <> "" And IsVisible($windows[$i][1]) Then
    _GUICtrlListView_AddItem($ListView, $windows[$i][0], _GUICtrlListView_GetItemCount($ListView))
    $P = WinGetProcess($windows[$i][1])
    $Prozess = _ProcessGetName($P)
    _GUICtrlListView_AddSubItem($ListView, _GUICtrlListView_GetItemCount($ListView) - 1, $Prozess, 1)
    EndIf
    Next
    EndFunc ;==>_ListWindows

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

    ;==============================
    ;Aus der Hilfe:
    ;==============================
    Func IsVisible($handle)
    If BitAND(WinGetState($handle), 2) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>IsVisible

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

    Einmal editiert, zuletzt von xp_fan (12. Februar 2010 um 16:49)

  • wenn ich mich nicht ganz irre musst du das handle der control angeben:


    Spoiler anzeigen
    [autoit]

    #include <GuiListView.au3>
    #include <GUIConstantsEx.au3>
    #include <Process.au3>

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

    Global $windows = "Auto Windowmanager"

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

    $hWnd = GUICreate($windows, 500, 400)

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

    Global $ListView = GUICtrlCreateListView("Fenstername|Datei", 10, 10, 480, 250)
    _GUICtrlListView_SetColumnWidth($ListView, 0, 300)
    _GUICtrlListView_SetColumnWidth($ListView, 1, 175)

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

    GUISetState(@SW_SHOW)

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

    ;_ListWindows()

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

    AdlibRegister("_ListWindows", 1000)

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

    While True
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    AdlibUnRegister()
    EndSwitch
    WEnd

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

    Func _ListWindows()
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView)); Funzt vielleicht :D!
    $windows = WinList()
    For $i = 1 To $windows[0][0]
    If $windows[$i][0] <> "" And IsVisible($windows[$i][1]) Then
    _GUICtrlListView_AddItem($ListView, $windows[$i][0], _GUICtrlListView_GetItemCount($ListView))
    $P = WinGetProcess($windows[$i][1])
    $Prozess = _ProcessGetName($P)
    _GUICtrlListView_AddSubItem($ListView, _GUICtrlListView_GetItemCount($ListView) - 1, $Prozess, 1)
    EndIf
    Next
    EndFunc ;==>_ListWindows

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

    ;==============================
    ;Aus der Hilfe:
    ;==============================
    Func IsVisible($handle)
    If BitAND(WinGetState($handle), 2) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>IsVisible

    [/autoit]