Suchfunktion mit unterstützung von "weitersuchen" wenn es mehrere items gibt?

  • Möchte beliebigen text in einem ctrl oder listview suchen und auch weitersuchen, komm jedoch jetzt nicht weiter hat vielleicht einer eine Idee?

    Mein Code:

    Spoiler anzeigen
    [autoit]


    Func search()
    #Region ### START Koda GUI section ### Form=
    $Form = GUICreate("Suchen", 400, 116, 294, 142,Default,Default,$Form1)
    GUISetIcon("C:\Windows\System32\shell32.dll")
    GUISetBkColor(0xFFFFFF)
    $searchinput = GUICtrlCreateInput("", 93, 12, 190, 21)
    $Label1 = GUICtrlCreateLabel("Suchbegriff:", 15, 15, 61, 17)
    $Label2 = GUICtrlCreateLabel("", 12, 45, 239, 17)
    $okbutton = GUICtrlCreateButton("OK", 309, 12, 81, 25, $WS_GROUP)
    $weitersuchen = GUICtrlCreateButton("Weitersuchen", 309, 45, 81, 25, $WS_GROUP)
    $abbrechenbutton = GUICtrlCreateButton("Abbrechen", 309, 78, 81, 25, $WS_GROUP)
    $Radio1 = GUICtrlCreateRadio("von oben beginnen", 12, 69, 113, 17)
    $Radio2 = GUICtrlCreateRadio("von unten beginnen", 12, 90, 113, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    GUIDelete()
    ExitLoop
    Case $searchinput
    IF _IsPressed ("0D") = 1 then
    $find = _GUICtrlListView_FindInText($Liste, GUICtrlRead ($searchinput))
    If $find < 0 Then
    MsgBox(0, "Suchen", "Der gesuchte Begriff konnte nicht gefunden werden...")
    else
    $lastitem = _GUICtrlListView_ClickItem(GUICtrlGetHandle($Liste), $find)
    EndIf
    EndIf
    GUICtrlSetState ($okbutton,$GUI_FOCUS)
    Case $okbutton
    $find = _GUICtrlListView_FindInText($Liste, GUICtrlRead ($searchinput))
    If $find < 0 Then
    MsgBox(0, "Suchen", "Der gesuchte Begriff konnte nicht gefunden werden...")
    else
    $lastitem = _GUICtrlListView_ClickItem(GUICtrlGetHandle($Liste), $find)
    EndIf

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

    Case $abbrechenbutton
    GUIDelete()
    ExitLoop

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

    Case $weitersuchen
    $find = _GUICtrlListView_FindInText($Liste, GUICtrlRead ($searchinput),$lastitem+1)
    $lastitem = _GUICtrlListView_ClickItem(GUICtrlGetHandle($Liste), $find)
    EndSwitch
    WEnd
    EndFunc

    [/autoit]
    Spoiler anzeigen
    Zitat

    Ich weiß wo dein Haus wohnt... 8o

    Einmal editiert, zuletzt von stinger2k (12. März 2010 um 20:04)

    • Offizieller Beitrag

    Das liegt an deinem $lastitem = _GUICtrlListView_ClickItem(GUICtrlGetHandle($Liste), $find), der Befehl liefert keinen Rückgabewert. Du solltest das Resultat der letzten Suckaktion als 3. Parameter von _GUICtrlListView_FindInText verwenden.


    Ungetestet weil ich kein Lauffähiges Beispiel habe :

    [autoit]

    Case $weitersuchen
    $find = _GUICtrlListView_FindInText($Liste, GUICtrlRead ($searchinput), $find)
    If $find <> -1 Then _GUICtrlListView_ClickItem($Liste, $find)

    [/autoit]

    Edit Tippfehler ausgebessert.