Hurtig søgning igennem et listview?
Hej Eksperter :)Jeg har et program, hvilket indeholder et listview med nogle IP adresser (på computere, der er forbundet til mit program) og et gruppenavn på IP'en (de er delt op i grupper, alt efter type). Endvidere har jeg et listview mere, med nogle "Keybinds" - altså knapper der skal trykkes på, hvis gruppenavnet er korrekt.
Min list1 kunne se således ud:
IP: Gruppenavn:
127.0.0.1 test1
127.0.0.2 test2
127.0.0.3 test1
127.0.0.4 test3
Mens at min anden list, umiddelbart kan se således ud:
Lokal tryk: Remote tryk: Gruppenavn:
1 A test1
1 C test2
2 K test3
osv.
Spørgsmålet er så bare, hvordan jeg nemmest får checket disse listviews igennem og sendt de rigtige informationer ud til de pågældende grupper. Lige pt har jeg et problem med, at når der kommer mange keybinds i list2, så begynder computeren at reagere langsomt overall generelt, da jeg har et keyboard-hook kørende, der checker ALLE tastetryk. Jeg har så prøvet at begrænse søgningen, så den først checker en variabel igennem om den indeholder nogle af de lokale tryk, og hvis dette er tilfældet, så kører den nogle løkker og finder de passende par.
Koden hertil ser således ud:
If KeyCode >= 96 And KeyCode <= 105 Then 'Numlock taster!
strSearch = "-[" & KeyCode - 96 & "]"
ElseIf KeyCode = vbKeyF1 Or KeyCode = vbKeyF2 Or KeyCode = vbKeyF3 Or KeyCode = vbKeyF4 Or KeyCode = vbKeyF5 Or KeyCode = vbKeyF6 Or KeyCode = vbKeyF7 Or KeyCode = vbKeyF8 Or KeyCode = vbKeyF9 Or KeyCode = vbKeyF10 Or KeyCode = vbKeyF11 Then
strSearch = "-F" & KeyCode - 111
Else
strSearch = "-" & Chr(KeyCode)
End If
If InStr(1, mVars.strKeybind, strSearch) > 0 Then
For Each objServer In sckServer
If objServer.State = sckConnected Then
For x = 1 To lstConnect.ListItems.Count
strRemoteHost = objServer.RemoteHostIP
If lstConnect.ListItems(x).Text = strRemoteHost AND lstConnect.ListItems(x).SubItems(2) = strType Then
objServer.SendData (strData)
DoEvents
End If
Next
End If
Next
End if
Er det muligt på nogen måde, at optimere denne kode, så det kan køre noget hurtigere? Er der andre og bedre metoder at klare det på? Ved godt det er en omgang upraktisk og grim kode, men mangler lidt viden mht. søgning indenfor VB og ting i den dur, hvilket bestemt ikke gavner denne problemstilling :)
Jeg håber i forstår spørgsmålet, ellers må i lige sige til :)
mvh
Lars
