Treegadget

Für allgemeine Fragen zur Programmierung mit PureBasic.
masel
Beiträge: 4
Registriert: 08.10.2004 12:57
Kontaktdaten:

Treegadget

Beitrag von masel »

Hallo

Ich habe etwas mit den Treegadgets experimentiert:

Code: Alles auswählen

#TreeGadgetKonstante=1

If OpenWindow(0,0,0,180,180,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"TreeGadget-Test") And CreateGadgetList(WindowID(0)) 
  TreeGadget(#TreeGadgetKonstante,10,10,160,160,#PB_Tree_CheckBoxes)  ; TreeGadget mit Checkboxen + ohne Linien 


      AddGadgetItem (1, -1, "Normal Item "+Str(a))    ; wenn Sie ein Bild hinzufügen möchten, dann 
      AddGadgetItem (1, -1, "Node "+Str(a))           ; benutzen Sie UseImage(x) als 4. Parameter 
      OpenTreeGadgetNode(1) 
      AddGadgetItem(1, -1, "Sub-Item 1") 
      AddGadgetItem(1, -1, "Sub-Item 2") 
      AddGadgetItem(1, -1, "Sub-Item 3") 
      AddGadgetItem(1, -1, "Sub-Item 4") 
      CloseTreeGadgetNode(1) 
      AddGadgetItem (1, -1, "File "+Str(a)) 
      
  Repeat
    EventID.l = WaitWindowEvent()
    Select EventID
      Case #PB_Event_Gadget
        GadgetID=EventGadgetID()
        If GadgetID=#TreeGadgetKonstante
          EintragsIndex=GetGadgetState(GadgetID)
          StatusNummer=GetGadgetItemState(GadgetID, EintragsIndex)

          GadgetItemState.s=""
          If StatusNummer/8>=1
          GadgetItemState.s="Collapsed "
          StatusNummer=StatusNummer-8
          EndIf
          If StatusNummer/4>=1
            GadgetItemState.s=GadgetItemState.s+"Checked "
            StatusNummer=StatusNummer-4
          EndIf
          If StatusNummer/2>=1
            GadgetItemState.s=GadgetItemState.s+"Expanded "
            StatusNummer=StatusNummer-2
          EndIf
          If StatusNummer=1
            GadgetItemState.s=GadgetItemState.s+"Selected "
          EndIf
        
          Debug "Eintrag-Index: "+Str(EintragsIndex)+" | Eintragsstatus: "+GadgetItemState
        EndIf
      EndSelect
    Delay(1)
  Until EventID=#PB_Event_CloseWindow 
EndIf 
Und zwei Fragen:
Wie bekommt die man beim Klicken auf die Treegadget Checkboxen bzw. die "+/-"e (der Einträge) zurückgeliefert zu welchem Eintrag die Checkbox bzw. das +/- gehört? Mit GetGadgetState geht es nicht (siehe Beispiel), da wird nur der ausgewählte Eintrag zurückgeliefert.
Gibt es eine Möglichkeit irgendwie "halb" ausgewählte Checkboxen (bei Node) zu bekommen, wie es sie z.B. bei verschiedenen Installationsroutinen gibt (falls man z.B. einige der Untercheckboxen (der Subitems) auswählt aber nicht alle)?