LinkedList umsortieren
Übersicht

![]() |
FarbfinsternisBetreff: LinkedList umsortieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
In meiner Liste hängen Objekte hintereinander ... man kann sich das ungefähr so vorstellen:
Code: [AUSKLAPPEN] Obj01:TObject, Obj02:TObject, Obj03:TObject, Obj04:TObject Nun will ich aber folgende Reigenfolge erreichen: Code: [AUSKLAPPEN] Obj01:TObject, Obj02:TObject, Obj04:TObject, Obj03:TObject Meine Idee war es mir mittels FindLink den Link zum Objekt zu holen, das Objekt aus der Liste zuu entfernen und dann mit InsertLinkBefore oder InsertLinkAfter das Objekt an einer anderen Stelle wieder einzufügen ... klappt aber nicht. Das Objekt wird zwar aus der Liste gelöscht, aber nicht wieder eingefügt. Jemand eine Idee wo mein Denkfehler liegt? Hier mein Ansatz in Code: Code: [AUSKLAPPEN] Function SortLayers(layer:TLayer, direction:Byte) Local link:TLink = layer._list.FindLink(layer) If link.PrevLink() <> Null layer._list.Remove(layer) If direction = 1 layer._list.InsertAfterLink(layer, link) Else layer._list.InsertBeforeLink(layer, link) EndIf ClearGadgetItems(lbx_layer) Local i:Int = 0 Local ic:Int = 0 For Local lay:TLayer = EachIn level.layer._list If lay.obj = 1 Then ic = 1 Else ic = 0 AddGadgetItem(lbx_layer, lay.title, 0, ic, "", lay) If lay = layer Then SelectGadgetItem(lbx_layer, i) i:+ 1 Next EndIf End Function |
||
![]() |
BtbN |
![]() Antworten mit Zitat ![]() |
---|---|---|
Meine Idee wäre jetzt, per hand die next und last einträge im Link zu verändern. Ich guck mal, ob ich da was finde. | ||
![]() |
amon |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast Du schon versucht zuerst einzufügen, und nach erfolgreichen einfügen zu löschen? | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
pack ein field _link:Tlink auf deine layer
dann beim list.addXY() das was zurück kommt dem _link zuweisen dann kannst du next und prev in der liste nämlich einfach so rausfinden. Verschieben geht dann per templink:tlink = _link.prevlink() ; _link.remove(); templink.addafter(self) als beispiel für ein einfügen danach in pseudocode. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group