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
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)?