ListViewGadget - Suche mit Next-Button

Für allgemeine Fragen zur Programmierung mit PureBasic.
Werner
Beiträge: 24
Registriert: 15.01.2005 19:43

ListViewGadget - Suche mit Next-Button

Beitrag von Werner »

Hallo PureBasic-Gemeinde!

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)
ccode_new
Beiträge: 1214
Registriert: 27.11.2016 18:13
Wohnort: Erzgebirge

Re: ListViewGadget - Suche mit Next-Button

Beitrag von ccode_new »

Guten Tach!

Meinst du das etwa so ähnlich ?

Code: Alles auswählen

Global spos.i = -1

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)
    ProcedureReturn pos
  EndIf
 ProcedureReturn -1
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 = GetGadgetText(2)
      spos = 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!")
      If spos <> -1
        If GetGadgetText(2) = Left(GetGadgetItemText(1, spos+1), Len(GetGadgetText(2)))
          spos = FindLB(1, GetGadgetItemText(1, spos+1))
        EndIf
      EndIf
    EndIf
   
     
  EndIf
 
Until Event = #PB_Event_CloseWindow 
Betriebssysteme: div. Windows, Linux, Unix - Systeme

no Keyboard, press any key
no mouse, you need a cat
Werner
Beiträge: 24
Registriert: 15.01.2005 19:43

Re: ListViewGadget - Suche mit Next-Button

Beitrag von Werner »

@ccode_new

Vielen Dank!
Genau das habe ich gesucht.
Schön, dass es so kompetente Leute wie Dich im Forum gibt :-)

Herzliche Grüße
Werner

___________________
PureBasic 5.61 (x64)
Antworten