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...
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!

Verfasst: 13.03.2009 08:45
von Little John
chrissi87 hat geschrieben:Vielleicht klappts ja mit der 4.40 von Hause aus!

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!
Gruß
Chrissi87