Guilistbox Filter optimieren

  • Guten Abend,

    Ich habe momentan dieses Script:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <GuiListBox.au3>

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

    Global $font = "Times New Roman", $size = 8.5, $weight = 100
    Global $Inhalt[7]=["Hallo","Mein Name","ist","nicht","dein","Name","haha"]

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

    $Fenster = GUICreate("Textbausteine", 300, 240) ;Grafische Ansicht
    $Filter = GUICtrlCreateButton("Aktuallisieren",20,5,80,30)
    $List_Handel = GUICtrlCreateList("", 20, 40, 260, 180) ;Liste in Tab Handel erstellen
    $Input = GUICtrlCreateInput("Filter",140,10,100,20)
    GUISetFont($size, $weight, 0, $font, $Fenster)
    GUISetState(@SW_SHOW, $Fenster)

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

    For $Index=0 To 6
    GUICtrlSetData($List_Handel,$Inhalt[$Index])
    Next

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

    While 1
    $msg = GUIGetMsg()
    if $msg = -3 Then Exit
    if $msg = $Filter Then
    _GUICtrlListBox_ResetContent($List_Handel)
    $Eingabe = GUICtrlRead($Input)
    For $Index=0 To 6
    If StringInStr($Inhalt[$Index],$Eingabe) Then GUICtrlSetData($List_Handel,$Inhalt[$Index])
    Next
    EndIf
    WEnd

    [/autoit]

    Leider muss man immer auf den Button "Aktualisieren" klicken, damit sich die Listbox aktualisiert.
    Wie kann ich das realisieren, dass sich der Inhalt der Listbox immer aktualisiert, wenn ich etwas eingebe im Inputfeld, ohne immer den Inhalt des Inputfeldes auf änderungen zu überprüfen?

    Lg, Fabian

    Einmal editiert, zuletzt von Fabian (16. Juli 2010 um 17:43)

  • Spoiler anzeigen
    [autoit]

    Func _Filter()
    $hRead = GUICtrlRead($Input)
    If $hRead = "" Then
    ;Falls Suchfeld leer ist
    EndIf
    If $hRead <> "" Then
    ;Suchen
    EndIf
    EndFunc

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

    Func WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Local $inp, $integer, $chk

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

    $chk = BitAND($wParam, 0x0000FFFF)
    Switch $chk
    Case $Input
    _Filter()
    EndSwitch
    EndFunc

    [/autoit]
  • Funktioniert super, Danke

    Noch eine Frage:

    In der Hilfe finde ich auch div. andere Nachrichtencode wie WM_Command, gibt es irgendwo eine Erklärung welcher Nachrichtencode was bedeutet?

  • Das weiß ich nicht.
    Den, den ich gepostet hab, hab ich durch die Suche gefunden und der war von UEZ glaube ich.
    Schau mal bei GuiRegisterMsg. Vielleicht steht da näheres zu den Nachrichtencodes.

  • Abend,

    Ich muss diesen Thread leider nochmals hervorgraben, da ich noch zwei ungelöste Probleme habe dazu.

    Ich will, dass das Eingabefeld einen Standarttext hat z.B. "Suchen" und dann soll falls das Eingabefeld den Fokus bekommt der Text gelöscht werden und wenn das Eingabefeld den Fokus wieder verliert soll der Standarttext wieder gesetzt werden.

    Habe auch schon die Forensuche bemüht und diesen Thread gefunden: [ offen ] Die Liste

    Laut diesem Thread gibt WM_COMMAND einen entsprechenden Code zurück für Fokus erhalten / Fokus verloren / Text Bearbeitet .
    Jetzt weiss ich leider nicht, wie ich diesen Code bekomme und ob das überhaupt mein Problem lösen kann?

    Vielen Dank im Voraus für die Hilfe

    LG, Fabian