Seite 1 von 1

treegadget nach oben scrollen

Verfasst: 28.05.2010 17:03
von Lisa85
Hallo

Ich habe ein Treegadget und im Gadget sind sehr viele Eintraege
Wenn ich mit SetGadgetItemState( gadgetnr, itemnr , #PB_Tree_Expanded ) alle Eintraege ausklappe, dann will ich das der erste Eintrag ausgewaehlt wird und nach oben gescrollt wird.
Dies kann ich mit SetGadgetItemState( gadgetnr , 0 , #PB_Tree_Selected ) und SetGadgetState( gadgetnr , 0 ) erledigen aber das funktioniert nur beim ersten Mal.
Wenn ich ausklappe dann wieder einklappe und dann wieder ausklappe dann scrollt er aba nicht nach oben, warum?

Code: Alles auswählen

If OpenWindow( 0 , 0 , 0 , 400 , 300 , "beispiel" , #PB_Window_SystemMenu )
  TreeGadget( 0 , 0 , 0 , 400 , 300 , 0 )
  
  For i = 1 To 10
  AddGadgetItem( 0 , -1 , "Text" , 0 , 0 )
  AddGadgetItem( 0 , -1 , "Unter Text" , 0 , 1)
  Next
  
  For j=0 To CountGadgetItems(0)-1
  SetGadgetItemState(0,j,#PB_Tree_Expanded)
  Next
  SetGadgetItemState(0,0,#PB_Tree_Selected)
  SetGadgetState(0,0)
  
  For j=0 To CountGadgetItems(0)-1
  SetGadgetItemState(0,j,#PB_Tree_Collapsed)
  Next
  SetGadgetItemState(0,0,#PB_Tree_Selected)
  SetGadgetState(0,0)
  
  ;/Hier ist der Fehler!!!
  
  For j=0 To CountGadgetItems(0)-1
  SetGadgetItemState(0,j,#PB_Tree_Expanded)
  Next
  SetGadgetItemState(0,0,#PB_Tree_Selected)
  SetGadgetState(0,0)
  
  ;\Warum scrollt er nicht nach oben???
  
  SetActiveGadget( 0 )
  
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

Re: treegadget nach oben scrollen

Verfasst: 28.05.2010 20:19
von Lisa85
Niemand eine Idee oder Loesung? /:->

Re: treegadget nach oben scrollen

Verfasst: 28.05.2010 20:37
von HeX0R
Lisa85 hat geschrieben:Niemand eine Idee oder Loesung? /:->
Das ist kein Chat und ausserdem ist dein Beispiel völlig unbrauchbarer Mist /:->
Vermutlich hat es sich deswegen keiner genauer angeschaut, wenn schon Beispiel, dann bitte mehr Mühe geben.

Du kannst nicht wie ein irrer Events verursachen und dich dann erst ganz am Ende um die Abholung kümmern,
das geht ganz einfach nicht!
Völlig egal, ob das nun mit deinem Problem zusammenhängt oder nicht.

So in etwa hätte dein Beispiel mehr Chancen zu Hilfestellungen gehabt:

Code: Alles auswählen

Procedure main()
	Protected i, State

	OpenWindow(0, 0, 0, 400, 300, "beispiel", #PB_Window_SystemMenu)
	TreeGadget(0, 0, 0, 400, 200, 0)
	ButtonGadget(1, 170, 210, 60, 22, "Switch")

	For i = 1 To 20
		AddGadgetItem( 0, -1, "Text", 0, 0 )
		AddGadgetItem( 0, -1, "Unter Text", 0, 1)
	Next

	For j = 0 To CountGadgetItems(0) - 1
		SetGadgetItemState(0, j, #PB_Tree_Expanded)
	Next
	SetGadgetItemState(0, 0, #PB_Tree_Selected)
	SetGadgetState(0, 0)

	Repeat

		Select WaitWindowEvent()
			Case #PB_Event_CloseWindow
				Break
			Case #PB_Event_Gadget
				Select EventGadget()
					Case 1
						State ! 1
						If State
							For i = 0 To CountGadgetItems(0) - 1
								SetGadgetItemState(0, i, #PB_Tree_Collapsed)
							Next i
							SetGadgetItemState(0, 0, #PB_Tree_Selected)
						Else
							For i = 0 To CountGadgetItems(0) - 1
								SetGadgetItemState(0, i, #PB_Tree_Expanded)
							Next i
							SetGadgetItemState(0, 0, #PB_Tree_Selected)
						EndIf
						SendMessage_(GadgetID(0), #TVM_ENSUREVISIBLE, 0, GadgetItemID(0, 0))
						SetActiveGadget(0)
				EndSelect
		EndSelect
	ForEver

EndProcedure

main()