Automatische Mehrfachselektion im ListView

  • Hallo Leute. Ich habe eine Liste, die ich mir in einem ListView in einer GUI anzeigen lasse. Ich habe mir nun einen kleinen Algorythmus gebaut, der eben diese Liste, bzw. das Array aus dem das ListView gespeist wird, durchsucht wird. Es kann durchaus vorkommen dass eine Suchanfrage mehrmals in der Liste gefunden wird. Die indicies der Suchergebnisse werden in einem weiteren Array gespeichert und ich möchte nun gerne alle Zeilen, in denen ein Suchergebnis gefunden wurde, markieren lassen. Wie kann ich das bewerkstelligen?

  • Mein Code wäre der folgende. Der Anhang ist eine txt-Datei, die musst du als zur .csv umbennen und im gleichen Verzeichnis haben wie das Script. Eigentlich genügt eine normale Auswahl. Farbige Markierungen wären nett, aber nicht erforderlich.


    test.txt

    • Offizieller Beitrag

    Wenn Du nur im sichtbaren Listview suchen willst, ist das mit "_GUICtrlListView_FindInText" viel einfacher. Ändere mal Deine Funktion "_suchen()" in diese:

    AutoIt
    Func _suchen()
        _werte_abfragen()
        _GUICtrlListView_SetItemSelected($list_datenbankinhalt, -1, False)
        Local $iIndex = -1
        Do
            $iIndex = _GUICtrlListView_FindInText($list_datenbankinhalt, $wert_input_suche, $iIndex, False)
            If $iIndex > -1 Then _GUICtrlListView_SetItemSelected($list_datenbankinhalt, $iIndex)
        Until $iIndex = -1
    EndFunc

    Nachtrag: Du musst noch die Mehrfachselektion beim Listview erlauben:

    AutoIt
    $list_datenbankinhalt = GUICtrlCreateListView("", 8, 32, 353, 435, $LVS_SHOWSELALWAYS)