Mehrere Checkboxen abfragen

Anfängerfragen zum Programmieren mit PureBasic.
Belgarath
Beiträge: 7
Registriert: 18.11.2004 18:11
Wohnort: Oldenburg

Mehrere Checkboxen abfragen

Beitrag 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?
Benutzeravatar
bluejoke
Beiträge: 1244
Registriert: 08.09.2004 16:33
Kontaktdaten:

Beitrag von bluejoke »

Du kannst dafür ja eine Schleife machen.
Eine andere Möglichkeit gibts glaub nicht.
Ich bin Ausländer - fast überall
Windows XP Pro SP2 - PB 4.00
Belgarath
Beiträge: 7
Registriert: 18.11.2004 18:11
Wohnort: Oldenburg

Beitrag 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 /:->
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag 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
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag 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 
Belgarath
Beiträge: 7
Registriert: 18.11.2004 18:11
Wohnort: Oldenburg

Beitrag 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.
Antworten