[gelöst]TreeGadget-Event-Auswertung klappt nich wie ich will
Verfasst: 23.01.2008 22:15
moin, moin...
Ich hab den Code mal soweit 'runtergestrippt, daß ich mein Problem darstellen kann.
Jedesmal, wenn man einen Item-/Knoten-Text Singleklickt, wird der Text ins StringGadget geschrieben.
Das soll so sein.
Wenn ich einen Knoten nur öffne oder schließe, wird das StringGadget nicht verändert.
Das soll so sein.
Wenn ich erst Node1 öffne, dann Node2 öffne und dann Sub-Item 14 anklicke, kommt das ins StringGadget.
Das soll so sein.
Wenn ich aber jetzt Node2 über den Knoten (+-) schließe und wieder öffne, wird "Node2" ins StringGadget geschrieben.
Das soll nicht sein, der alte Inhalt ("Sub-Item 14") soll erhalten bleiben.
Ich seh vielleicht nach ettlichen Versuchen (u.a auch mit #PB_Tree_Collapsed und #PB_Tree_Expanded) den Wald vor lauter Bäumen nicht, aber mir fällt nix mehr ein.
Mag jemand helfen ?
Ich hab den Code mal soweit 'runtergestrippt, daß ich mein Problem darstellen kann.
Code: Alles auswählen
#main_tree =1
#strg_id = 2
Define.s parentTGitem
Procedure.s ugs_get_parentTGitem(main_treeID.l)
Define.l main_treeID
CurrentItem = GetGadgetState(main_treeID)
CurrentLevel = GetGadgetItemAttribute(main_treeID,CurrentItem,#PB_Tree_SubLevel)
If CurrentLevel > 0
For i = CurrentItem-1 To 0 Step -1
If GetGadgetItemAttribute(main_treeID,i,#PB_Tree_SubLevel) < CurrentLevel
parent$ = GetGadgetItemText(main_treeID,i,0)
Break
EndIf
Next
Else
parent$ = "no parent"
EndIf
ProcedureReturn parent$
EndProcedure; ugs_getparentTGitem
Procedure ugs_filter_sql()
SetGadgetText(#strg_id, GetGadgetItemText(#main_tree, GetGadgetState(#main_tree), 0))
EndProcedure; ugs_filter_sql()
If OpenWindow(0, 50, 50, 355, 250, "TreeGadget", #PB_Window_SystemMenu ) And CreateGadgetList(WindowID(0))
TreeGadget(#main_tree, 5, 5, 160, 230, #PB_Tree_AlwaysShowSelection )
AddGadgetItem(#main_tree, -1, "Normal Item "+Str(a), 0, 0)
AddGadgetItem(#main_tree, -1, "Node 1", 0, 0)
AddGadgetItem(#main_tree, -1, "Sub-Item 1", 0, 1)
AddGadgetItem(#main_tree, -1, "Sub-Item 2", 0, 1)
AddGadgetItem(#main_tree, -1, "Sub-Item 3", 0, 1)
AddGadgetItem(#main_tree, -1, "Sub-Item 4", 0, 1)
AddGadgetItem(#main_tree, -1, "File "+Str(a), 0, 0)
AddGadgetItem(#main_tree, -1, "Node 2", 0, 0)
AddGadgetItem(#main_tree, -1, "Sub-Item 11", 0, 1)
AddGadgetItem(#main_tree, -1, "Sub-Item 12", 0, 1)
AddGadgetItem(#main_tree, -1, "Sub-Item 13", 0, 1)
AddGadgetItem(#main_tree, -1, "Sub-Item 14", 0, 1)
StringGadget(#strg_id,170,100,100,20,"")
EndIf
SetActiveGadget(#main_tree)
SetGadgetState(#main_tree, 0)
ugs_filter_sql()
Gosub main
End
main:
;#############################################
;{
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = #True
Case #PB_Event_Gadget
ETyp = EventType()
Select EventGadget()
Case #main_tree
Select ETyp
Case #PB_EventType_LeftClick
If parentTGitem <> GetGadgetItemText(#main_tree, GetGadgetState(#main_tree))
ugs_filter_sql()
EndIf
Case #PB_EventType_LeftDoubleClick
Case #PB_EventType_RightDoubleClick
Case #PB_EventType_RightClick
Case #PB_EventType_Focus
Case #PB_EventType_LostFocus
Case #PB_EventType_Change
Case #PB_EventType_DragStart
EndSelect; Select EventType() for TreeGadget
EndSelect; Select EventGadget()
parentTGitem = ugs_get_parentTGitem(#main_tree)
EndSelect; WaitWindowEvent()
Until Quit = #True
;}
Return; main
Das soll so sein.
Wenn ich einen Knoten nur öffne oder schließe, wird das StringGadget nicht verändert.
Das soll so sein.
Wenn ich erst Node1 öffne, dann Node2 öffne und dann Sub-Item 14 anklicke, kommt das ins StringGadget.
Das soll so sein.
Wenn ich aber jetzt Node2 über den Knoten (+-) schließe und wieder öffne, wird "Node2" ins StringGadget geschrieben.
Das soll nicht sein, der alte Inhalt ("Sub-Item 14") soll erhalten bleiben.
Ich seh vielleicht nach ettlichen Versuchen (u.a auch mit #PB_Tree_Collapsed und #PB_Tree_Expanded) den Wald vor lauter Bäumen nicht, aber mir fällt nix mehr ein.
Mag jemand helfen ?