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)