Seite 1 von 1
ListIconGadget Suchfunktion (Windows)
Verfasst: 17.07.2023 20:04
von jogo
Hallo zusammen,
wenn ich im ListIconGadget irgend etwas eintippe, hüpft in Windows ja das ListIconGadget auf den passenden Eintrag, wenn dieser in Spalte 1 mit meinen eingetippten Text
beginnt.
Gibt es für Windows eine Möglichkeit oder Ansatz, dass die Suche auch Treffer liefert, wenn der eingetippte Text irgendwo in einen Eintrag der 1. Spalte vorkommt?

Re: ListIconGadget Suchfunktion (Windows)
Verfasst: 18.07.2023 00:03
von jacdelad
Das geht doch schon von sich aus (wenn der Fokus auf dem ListIconGadget liegt):
Code: Alles auswählen
OpenWindow(0,0,0,500,400,"Test",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ListIconGadget(0,0,0,500,400,"Spalte 1",100,#PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines)
AddGadgetColumn(0,1,"Spalte 2",100)
AddGadgetColumn(0,2,"Spalte 3",100)
AddGadgetColumn(0,3,"Spalte 4",100)
For a=65 To 90
For b=1 To 10
temp$=ReplaceString("..........",".",Chr(a))
AddGadgetItem(0,-1,temp$+#LF$+temp$+#LF$+temp$+#LF$+temp$+#LF$)
Next
Next
SetActiveGadget(0)
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
...und jetzt tippe mal einen Buchstaben ein.
Edit: Ich sehe gerade, du willst bestimmt mehr als einen Buchstaben haben?! Dann musst du die Tasteneingabe abfangen, zusammenfügen und anschließend suchen lassen (dafür gibt's #LVM_FINDITEM und du brauchst noch die Struktur LVFINDINFO); oh und achte auf das Timing, nach einer bestimmten Zeit verfällt ja deine Eingabe. Da kommt einiges an Arbeit auf dich zu.
https://learn.microsoft.com/en-us/windo ... m-finditem
https://learn.microsoft.com/en-us/windo ... vfindinfoa
Re: ListIconGadget Suchfunktion (Windows)
Verfasst: 18.07.2023 11:18
von jogo
Jo Danke für die Antwort. Mit mehreren Buchstaben funktioniert es ja auch schon von sich aus. Und das mit dem Timer ist auch ok. Man darf halt beim Tippen nicht allzusehr trödeln

Mir geht es darum, dass die eingetippte Zeichenfolge auch mitten drin gefunden wird. Also nicht nur am Anfang des Itemtextes.
Läßt sich da was einstellen?
Re: ListIconGadget Suchfunktion (Windows)
Verfasst: 18.07.2023 11:48
von jogo
In Linux funktionierte diese Suchfunktion ja garnicht. Da habe ich das mit folgenden Code hier aus dem Forum gelöst:
Code: Alles auswählen
; ---------- Funktion für die schnellsuche in der tabelle (code stammt aus PB-forum)
ProcedureC blitzlist(*model, column, *key, iter, *search_data)
;jeder Pfad (Zeile), der in systemsearch teilweise übereinstimmt, wird bei jeder Änderung des Editierfeldes an diese Funktion gesendet
Protected.i I, Found= #True
Protected.l Indx
Protected path
Protected.s Search= PeekS(*key, -1, #PB_UTF8); current search-string in UTF8-Format
path = gtk_tree_model_get_path_(*model, iter); get path from iter,
Indx = PeekL(gtk_tree_path_get_indices_(path)); then index (LIG-line) from path
If FindString(GetGadgetItemText(1, Indx, column), Search, 1, #PB_String_NoCase); own check to verify the suggestion
Found= #False
EndIf
gtk_tree_path_free_(path); forgot it till V0.2
ProcedureReturn Found ; #False = Ok !
EndProcedure
Dies überimmt die komplette Suche und findet auch Einträge, die im Itemstring irgendwo vorkommen. Klappt bestens.
Vllt. gibt es eine Message für Windows, mit der ich den Suchmodus umstellen kann?
Ich habe keine Erfahrungen mit API-Aufrufen in PureBasic (auch wenn ich diese versehentlich doch mal irgendwo eingebaut habe

)