Ich habe ein wunderbares Beispiel für die Suche im ListViewGadget von mk-soft gefunden.
Ein Lob an ihn
Ich habe es etwas modifiziert, um es in einem Projekt zu verwenden.
Mein Problem ist, dass ich nicht nach Zahlen, sondern nach Zeichenketten suchen möchte (Software-Einträge).
Das ist ja mit dem Beispiel kein Problem. Ich hätte aber gerne über den NEXT-Button folgende Möglichkeit:
Suche ich, um bei diesem Beispiel zu bleiben, 11 wird auch 11002 angezeigt. über den Button NEXT soll dann
auch z.B. 11005, 11009 etc. an erster Stelle des ListViewGadgets angezeigt werden.
Kann mir jemand diesbezüglich helfen?
Im Voraus besten Dank!
Werner
Code: Alles auswählen
OpenWindow(0, 0, 0, 300, 300,"Listview example",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ListViewGadget(1,10,10,200,250)
StringGadget(2,230,10,60,20,"",#PB_String_Numeric)
ButtonGadget(3,230,40,60,20,"SEARCH")
ButtonGadget(4,230,70,60,20,"NEXT")
SendMessage_(GadgetID(1),#WM_SETREDRAW,#False,0)
For f = 0 To 60000
r = Random(3 , 1)
AddGadgetItem(1,-1,RSet((Str((f+r)&$FFFF)),5,"0"))
f+r
Next
SendMessage_(GadgetID(1),#WM_SETREDRAW,#True,0)
Procedure FindLB(gadget, text.s)
Protected pos
pos = SendMessage_(GadgetID(gadget), #LB_FINDSTRING, -1, @text)
If pos <> #LB_ERR
SendMessage_(GadgetID(gadget), #LB_SETTOPINDEX, pos, 0)
EndIf
EndProcedure
Repeat
Event = WaitWindowEvent()
gadgetID = EventGadget()
If Event = #PB_Event_Gadget
If gadgetID = 3
Laenge_InputText = Len(GetGadgetText(2))
;find.s = RSet(GetGadgetText(2),5,"0")
find.s = RSet(GetGadgetText(2),Laenge_InputText,"")
FindLB(1, find)
;Debug "I need to show at the top of ListViewGadgeget, the number found"
EndIf
If gadgetID = 4
MessageRequester("Info", "Hier sollte das zweite Vorkommen der Zeichenkette angezeigt werden."+Chr(13)+"So in der Art 'FindNext(m_rnFind)'."+Chr(13)+"Bin für jede Hilfe dankbar!")
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
PureBasic 5.61 (x64)