ListView Item löschen

  • also ich habe folgende ListView


    Spoiler anzeigen
    [autoit]


    #include
    #include
    #include
    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Form1", 392, 373, 995, 269)
    Global $ListView1 = GUICtrlCreateListView("1|2|3", 87, 51, 217, 211)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 70)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 70)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 70)
    Global $ListView1_0 = GUICtrlCreateListViewItem("235|test|test2", $ListView1)
    Global $ListView1_1 = GUICtrlCreateListViewItem("223|test|test2|", $ListView1)
    Global $ListView1_2 = GUICtrlCreateListViewItem("456|test|test2", $ListView1)
    Global $ListView1_3 = GUICtrlCreateListViewItem("353|test|test2", $ListView1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]


    also die werte von der column 1 sind IMMER unterschiedlich die von 2 oder 3 können auch mal gleich sein...
    ich würde jetzt gerne den Eintrag 456 + dessen untereinträge (test und test2) löschen
    ich bräuchte dazu ja den index aber da die einträge der listview nie in der gleichen reihenfolge sind muss
    ich den irgendwie herausfinden..wie mache ich das?

    Einmal editiert, zuletzt von Reaker (6. Januar 2010 um 20:09)

  • Hallo Reaker,

    so z.b:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiListView.au3>

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

    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Form1", 392, 373);, 995, 269)
    Global $ListView1 = GUICtrlCreateListView("1|2|3", 87, 51, 217, 211,BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 70)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 70)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 70)
    Global $ListView1_0 = GUICtrlCreateListViewItem("235|test|test2", $ListView1)
    Global $ListView1_1 = GUICtrlCreateListViewItem("223|test|test2|", $ListView1)
    Global $ListView1_2 = GUICtrlCreateListViewItem("456|test|test2", $ListView1)
    Global $ListView1_3 = GUICtrlCreateListViewItem("353|test|test2", $ListView1)
    Global $btnDelete = GUICtrlCreateButton("Ausgewählte Einträge löschen!",25,330)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;Item 456 auswählen
    Global $iI = _GUICtrlListView_FindText($ListView1, "456",0,False,False)
    _GUICtrlListView_SetItemSelected($ListView1,$iI)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btnDelete
    _GUICtrlListView_DeleteItemsSelected($ListView1)
    EndSwitch
    WEnd

    [/autoit]

    Edit: Item 456 bereits zum löschen vorselektiert eingefügt
    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (6. Januar 2010 um 19:47)

  • über auswählen kann ich das leider nicht machen...des is eine liste von clienten die online sind..wenn einer offline geht kann ich das ja nicht beeinflussen...

    puuh das ist ganz schön kompliziert

  • habs jetz mal so versucht aber geht irgendwie noch nicht:

    http://pastebin.com/d4c59c8bc


    /Edit sooo endlich geschafft...habe bei _guictrllistview_getitemtext einfach aus der 1 ne 0 gemacht...dachte dass der 1. subeintrag auch ne 1 ist, aber da hab ich mich wohl geirrt :D

  • Hallo Reaker,

    schau dir diese Zeilen

    [autoit]

    Global $iI = _GUICtrlListView_FindText($ListView1, "456",0,False,False)
    _GUICtrlListView_SetItemSelected($ListView1,$iI)

    [/autoit]

    in meinem Beispiel noch einmal an. Du kannst den Button zum löschen auch weglassen, musst dann allerdings direkt danach

    [autoit]

    _GUICtrlListView_DeleteItemsSelected($ListView1)

    [/autoit]

    einfügen. Auch solltest du dir die Hilfe zu _GUICtrlListView_FindText anschauen,

    mfg (Auto)Bert

    • Offizieller Beitrag

    @Reaker
    Ich weiß ja nicht ob ich das jetzt richtig verstanden habe, aber du suchst eine möglichkeit jedes x beliebige Item aus dem Listview zu löschen .

    Spoiler anzeigen
    [autoit]

    #include <ListViewConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #Region ### START Koda GUI section ### Form=
    Global $Form1 = GUICreate("Form1", 392, 373, 995, 269)
    Global $ListView1 = GUICtrlCreateListView("1|2|3", 87, 51, 217, 211)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 70)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 70)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 2, 70)
    Global $ListView1_0 = GUICtrlCreateListViewItem("235|test|test2", $ListView1)
    Global $ListView1_1 = GUICtrlCreateListViewItem("223|test|test2|", $ListView1)
    Global $ListView1_2 = GUICtrlCreateListViewItem("456|test|test2", $ListView1)
    Global $ListView1_3 = GUICtrlCreateListViewItem("353|test|test2", $ListView1)
    GUISetState(@SW_SHOW)
    Global $contextmenu1 = GUICtrlCreateContextMenu($ListView1)
    Global $item1 = GUICtrlCreateMenuItem("Eintrag löschen", $contextmenu1)

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

    #EndRegion ### END Koda GUI section ###
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $item1
    _GUICtrlListView_DeleteItem($ListView1, _GuiCtrlListView_GetFirstSelected($ListView1))
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    Func _GuiCtrlListView_GetFirstSelected($hWnd)
    Global $SelectedItemi
    $SelectedItemi = _GUICtrlListView_GetSelectedIndices($hWnd, True)
    If $SelectedItemi[0] = 0 Then Return SetError(1)
    Return $SelectedItemi[1]
    EndFunc ;==>_GuiCtrlListView_GetFirstSelected

    [/autoit]

    Rechtsklick auf das Item und schon kannst du es per Context löschen.

  • ähm wie gesagt ich kanns nich über klicken löschen..ich wollte wenn ein client offline geht dass dieser eintrag verschwindet...

    ach ja und die "angebliche" lösung von mir war doch falsch :D

    hab jetz nochmal sehr lange rumgetüftelt und eine lösung gefunden:)

    Hier: http://pastebin.com/d42397b35

    also bin echt froh dass ich das jetzt habe...vorallem verwirrt einen dass voll das subitem und item irgendwie bei 0 anfangen

    /Edit..@autobert..stimmt du hast recht..deins würde auch gut gehen und da hätte ich mir die ganzen probleme jetz sparen können^^..trotzdem dankee

  • @Bug sry...aber ich nutze safari und wenn ich die scripte mit safari poste, dann ist die komplette formatierung im eimer ..des ist dann alles in einer zeile...und ich glaube das wäre nicht gerade angenehm...