Seite 1 von 1

Problem mit Tree Gadget

Verfasst: 11.03.2009 12:16
von chrissi87
Hallo!

Bastel gerade ein wenig mit PB 4.2 unter Linux.

Ich habe folgendes Problem:

Ich habe ein TreeGadget erstellt und will dieses mit Einträgen füllen, was auf dem 1. Blick auch funzt.

Wenn ich immer schön der Reihe nach Item für Item hinzufüge, klappt alles wunderbar. Wenn ich jedoch nach einem Item mit dem Sublevel > 0 ein weiteres auf gleichem Sublevel hinzufügen will, wird erscheint dieses am ende aller Einträge, dieses SubLevels.

Wenn ich später mittels ID den Text ändere, ändert sich aber der Text des Items an der Stelle, wo ich das Neue eigentlich platziert hatte. Und nicht der Text des neu hinzugekommenen.

(Klingt vermutlich verwirrend, aber ich weiß nicht recht wie ich das sinnvoll beschreiben soll)

Jedenfalls der Clou ist: Unter Windows funzt der selbe Code ohne irgendwelche Probleme zu machen!

Ich hoffe hier weiß jemand Rat - Ich bin am verzweifeln!

Verfasst: 11.03.2009 22:13
von PBFetischist
Welches Linux hast du ?

Kannst du einen Code zeigen ?

Grüße aus HH

Verfasst: 12.03.2009 10:09
von tmjuk
Ich denke, das dies weniger an Linux liegt.
Aber man wird sehen.
Schick bitte mal Code, in welchem der Fehler auftritt.

Torsten

Verfasst: 12.03.2009 10:27
von chrissi87
Oh! Sorry, hatte ich ganz vergessen zu erwähnen! Ich nutze Ubuntu 8.04

Glaub fast auch nicht, dass es an Linux liegt, aber vielleicht hat ja jemand ne Idee!

Der eigentliche Code wäre zu umfangreich - hab das mal vereinfacht... :mrgreen:

Also:

Code: Alles auswählen

OpenWindow(0, 0, 0, 200, 200, "Test Tree Gadget")

  CreateGadgetList(WindowID(0))
    TreeGadget(0, 0, 0, 200, 200)
      AddGadgetItem(0, 0, "Item 1", 0, 0)
      AddGadgetItem(0, 1, "Item 2", 0, 0)
      AddGadgetItem(0, 2, "Item 5", 0, 0)
      AddGadgetItem(0, 3, "Item 6", 0, 0)
      
      AddGadgetItem(0, 2, "Sub1", 0, 1)
      AddGadgetItem(0, 3, "Sub2", 0, 1)
      
      AddGadgetItem(0, 2, "Sub3", 0, 1)
 
 
 For item = 0 To CountGadgetItems(0) - 1
    Debug GetGadgetItemText(0, item)
  
  Next item
 
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow

Also:
Man sieht die Debug - Ausgabe und das Fenster stimmen nicht wirklich überein... und die Items sind nicht wirklich da, wo ich dächte, dass sie stehen müssten. :(


Code-Tags gesetzt - Kaeru fecit
In Zukunft bitte selbst drauf achten!

Verfasst: 12.03.2009 18:36
von Waldixxl
Hallo chrissi87
Ich habe es auch mit der Version PB 4.3 getestet und auch hier tritt das gleiche Problem auf
Meiner Meinung handelt es sich hier um einen Bug von PB.

Wenn dein Tree nicht zu groß ist kannst Du sie ja neu aufbauen

Code: Alles auswählen


Procedure RefreshTreeGadget(TreeGatget)

	Protected Anzahl=CountGadgetItems(TreeGatget) - 1
	Dim Text$(Anzahl)
	Dim Level(Anzahl)
	
	For item = 0 To Anzahl
	   Text$(item)= GetGadgetItemText(TreeGatget, item)
	   Level(item)=GetGadgetItemAttribute(TreeGatget, item,#PB_Tree_SubLevel)
	Next
	
	ClearGadgetItems(TreeGatget)   ;ClearGadgetItemList(TreeGatget) für PB 4.2
	
	For item = 0 To Anzahl
	  AddGadgetItem(0, item,Text$(item), 0, Level(item))
	Next

EndProcedure
Hat bei mir geklappt

Verfasst: 12.03.2009 22:39
von tmjuk
Hallo,

ja, deine Beobachtung stimmt.

Wird unter Linux falsch angezeigt. Habe mit 4.30 unter Suse getestet.

Um die Idee von Waldixxl aufzugreifen:
Man könnte die einzelnen Elemente ja auch in einer strukturierten Liste aufbewahren.
In der Liste werden dann die Manipulationen durchgefuehrt und dann der Tree aus der Liste neu geschrieben. Sollte eigentlich relativ fix gehen.
(Natuerlich nur als vorläufige Abhilfe).
z.B. als Struktur

Code: Alles auswählen

Structure data_list
	id.l			; Ident des Eintrages
	platz.l			; Platz im Tree
	parent_id.l		; Id des uebergeordneten Eintrages
	text.s			; Text des Eintrages
	image_id.l		; Id des zugehörigen Image
	eingeklappt.l     ; Eintrag expandiert, 1 = ja
EndStructure

Torsten

Verfasst: 13.03.2009 07:38
von chrissi87
Hallo!

Also vielen Dank erstmal für eure Hilfe!

Ist zwar nicht Sinn und Zweck "die Items selbst zu verwalten"... aber so komme ich wenigstens erstmal weiter.

Vielleicht klappts ja mit der 4.40 von Hause aus! :wink:

Verfasst: 13.03.2009 08:45
von Little John
chrissi87 hat geschrieben:Vielleicht klappts ja mit der 4.40 von Hause aus! :wink:
Ja, vielleicht ...
Die Chance dafür kannst Du erhöhen, indem Du das Problem im englischen Bug-Forum meldest.

Gruß, Little John

Verfasst: 13.03.2009 09:15
von chrissi87
Hallo Little John!

Danke! Das werde ich mal versuchen!

Mal Schauen, ob mein Englisch dafür reicht! :mrgreen:

Gruß
Chrissi87