Seite 1 von 1

Mehrere Checkboxen abfragen

Verfasst: 04.03.2005 14:00
von Belgarath
Ich schreibe gerade eine kleine Datenbank und möchte eine erweiterte Suchfunktion einbauen.
Das Ganze hatte ich mir so vorgestellt, daß man per Checkboxgadget angeben kann, wonach der Inhalt der DB gefiltert wird. Dummerweise sind das so in etwa 50 Checkboxen.

Nun würde ich gerne wissen, ob es eine einfache und schnelle Möglichkeit gibt, um den Status jeder einzelnen Checkbox heraus zu bekommen. Oder muß ich für jede CB GetGadgetState() benutzen?

Verfasst: 04.03.2005 14:12
von bluejoke
Du kannst dafür ja eine Schleife machen.
Eine andere Möglichkeit gibts glaub nicht.

Verfasst: 04.03.2005 14:48
von Belgarath
Hm, das hatte ich befürchtet. Da ich #PB_Any benutzt habe, könnte das mit der Schleife schwierig werden.

Da hilft wohl doch nur jede einzeln abzufragen /:->

Verfasst: 04.03.2005 14:50
von freedimension
Belgarath hat geschrieben:Hm, das hatte ich befürchtet. Da ich #PB_Any benutzt habe, könnte das mit der Schleife schwierig werden.
Das muss es nicht heißen. Was benutzt du denn um die GadgetIDs zu speichern? Eine Linked List oder ein Array? Beides könntest du dann ja mit einer For- bzw. ForEach-Schleife durchlaufen.

Gruß
Mirko

Verfasst: 04.03.2005 15:36
von Leo
Hier mal ein kleines Beispiel, wie dus machen könntest

Code: Alles auswählen

Structure CheckBoxInfo
    OldState.l
    ID.l
EndStructure
NewList CheckBoxes.CheckBoxInfo()
hWnd = OpenWindow(0,0,0,470,40,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"Titel!!!")
CreateGadgetList(hWnd)
For I = 0 To 2
    AddElement(CheckBoxes())
    CheckBoxes()\ID = CheckBoxGadget(#PB_Any,10+I*200,10,180,20,"Text "+Str(I))
Next

Repeat
    Select WaitWindowEvent()
        Case #PB_Event_CloseWindow 
            Quit = #True 
    EndSelect
    ForEach CheckBoxes()
        If GetGadgetState(CheckBoxes()\ID) <> CheckBoxes()\OldState
            Debug "Name: "+GetGadgetText(CheckBoxes()\ID)
            Debug "State: "+Str(GetGadgetState(CheckBoxes()\ID))
        EndIf 
        CheckBoxes()\OldState = GetGadgetState(CheckBoxes()\ID)
    Next
Until Quit = #True 

Verfasst: 04.03.2005 15:51
von Belgarath
@freedimension
Klar, ich Sepp hab mal wieder den Wald vor lauter Bäumen nicht gesehen. Machs jetzt mit einem Array und funzt auch. Danke für den Tip!

@Leo
Auch dir ein herzliches Danke. Der Code funktioniert, nur leider hab ich mich mit LL noch nicht so sonderlich auseinander gesetzt, deshalb werde ich es erstmal mit einem Array versuchen.