treegadget nach oben scrollen

Anfängerfragen zum Programmieren mit PureBasic.
Lisa85
Beiträge: 22
Registriert: 24.04.2010 18:17

treegadget nach oben scrollen

Beitrag 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
Lisa85
Beiträge: 22
Registriert: 24.04.2010 18:17

Re: treegadget nach oben scrollen

Beitrag von Lisa85 »

Niemand eine Idee oder Loesung? /:->
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Re: treegadget nach oben scrollen

Beitrag 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()
Antworten