hier mal mein Vorschlag ohne Callback und Gebimsel:
Code: Alles auswählen
EnableExplicit
Structure sAuto
Hersteller.s
Baujahr.s
PS.s
EndStructure
Global NewList Auto.sAuto()
Enumeration FormWindow
#Window_0
EndEnumeration
Enumeration FormGadget
#lblHerstellerFilter
#txtHerstellerFilter
#lblPsFilter
#txtPsFilter
#lblBaujahrFilter
#txtBaujahrFilter
#ligAutos
#cmdFilter
EndEnumeration
Procedure OpenWindow_0()
OpenWindow(#Window_0, 0, 0, 600, 400, "Alle meine Autos", #PB_Window_SystemMenu)
TextGadget(#lblHerstellerFilter, 8, 8, 100, 25, "Hersteller:")
StringGadget(#txtHerstellerFilter, 112, 8, 100, 25, "")
TextGadget(#lblBaujahrFilter, 8, 40, 100, 25, "Baujahr:")
StringGadget(#txtBaujahrFilter, 112, 40, 100, 25, "")
TextGadget(#lblPsFilter, 8, 72, 100, 25, "PS:")
StringGadget(#txtPsFilter, 112, 72, 100, 25, "")
ListIconGadget(#ligAutos, 8, 112, 584, 280, "Hersteller", 100)
AddGadgetColumn(#ligAutos, 1, "Baujahr", 100)
AddGadgetColumn(#ligAutos, 2, "PS", 100)
ButtonGadget(#cmdFilter, 232, 72, 100, 25, "Filtern")
EndProcedure
AddElement(Auto()) : Auto()\Hersteller = "lala" : Auto()\PS = "100" : Auto()\Baujahr = "2000"
AddElement(Auto()) : Auto()\Hersteller = "lala" : Auto()\PS = "200" : Auto()\Baujahr = "2000"
AddElement(Auto()) : Auto()\Hersteller = "lala" : Auto()\PS = "300" : Auto()\Baujahr = "2000"
AddElement(Auto()) : Auto()\Hersteller = "lulu" : Auto()\PS = "100" : Auto()\Baujahr = "2010"
AddElement(Auto()) : Auto()\Hersteller = "lulu" : Auto()\PS = "200" : Auto()\Baujahr = "2010"
AddElement(Auto()) : Auto()\Hersteller = "lulu" : Auto()\PS = "300" : Auto()\Baujahr = "2010"
Procedure RefillList()
ClearGadgetItems(#ligAutos)
Protected Hersteller_OK, PS_OK, Baujahr_OK
ForEach Auto()
Hersteller_OK = #True
If GetGadgetText(#txtHerstellerFilter) <> ""
Hersteller_OK = FindString(Auto()\Hersteller, GetGadgetText(#txtHerstellerFilter))
EndIf
PS_OK = #True
If GetGadgetText(#txtPsFilter) <> ""
PS_OK = Bool(Auto()\PS = GetGadgetText(#txtPsFilter))
EndIf
Baujahr_OK = #True
If GetGadgetText(#txtBaujahrFilter) <> ""
Baujahr_OK = Bool(Auto()\Baujahr = GetGadgetText(#txtBaujahrFilter))
EndIf
If Hersteller_OK And PS_OK And Baujahr_OK
AddGadgetItem(#ligAutos, -1, Auto()\Hersteller + #LF$ + Auto()\Baujahr + #LF$ + Auto()\PS)
EndIf
Next
EndProcedure
OpenWindow_0()
RefillList()
BindGadgetEvent(#cmdFilter, @RefillList())
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow