Einfaches Bewegen von Objekten in TreeViews?
Übersicht

fliegeBetreff: Einfaches Bewegen von Objekten in TreeViews? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, ich hab eine kleine Frage zum Thema TreeViews:
Kann man die Einträge irgendwie auf eine einfache Art und weise verschieben? Dabei gehts mir nicht nur drum an den obersten Zweigen herum zu schieben, sondern auch alle Unterzweige mitzunehmen.. Also wenn ich zum Beispiel hab: Code: [AUSKLAPPEN] Node1 Node2 Node3 Node3,1 Node4 dann würd ich gern die komplette Node3 VOR Node1 schieben. Kennt da jemand einen Befehl oder einen einfachen Trick wie man das anstellen kann? Fliege |
||
![]() |
ShadowJumper |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich hab mich damit noch nicht so richtig beschäftigt, aber da "Node3,1" ja "Node3" schon untergeordnet ist, müsste man nur "Node3" verschieben und alle darunter bleiben dann darunter
aber man kann einen Eintrag leider nicht einfach verschieben, sondern muss ihn neu einfügen (glaub ich zumindest) |
||
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Joa, das einzige Problem das ich dabei habe ist, dass ich keinen Befehl zum verschieben der Elemente finde ![]() Blitzbase hat da auch nur wenig geholfen.. Also würde nur der Weg bleiben, alle Elemente in Types zu speichern, und dann beim verschieben die liste zu löschen und neu zu erstellen. Nur wie kann ich dann zum Beispiel "Node3,1" so speichern, dass sie immer bei "Node3" bleibt? |
||
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich würde hier das Child-Parent-System verwenden.
D.h. jedes Element besitzt einen "Zeiger" auf das übergeordnete Element. Code: [AUSKLAPPEN] Type TNode
Field name$ Field parent.TNode End Type Dadurch musst du nur Node3 verschieben und Node3,1 muss nicht verändert werden. Zusätzlich könntest du auch die Childs speichern, aber das ist in diesem Fall nicht unbedingt nötig. Anschließend musst du durch jedes Element iterieren und aus den gegebenen Daten die TreeView generieren. |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Die Idee ansich ist nicht schlecht, nur mit dem einzigen Nachteil, dass ich leider keinen Befehl kenne, in der TreeVie zu verschieben, also muss ich zwangsläufig alle Inhalte neu erstellen, und dann nur die parentnode wegzuspeichern wäre schlecht, weils die ja dann nicht mehr gibt. | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast den gegebenen Vorschlag offenbar nicht wirklich verstanden.
In den Types sollst Du die 'Hackordnung' speichern, sprich die grundlegende Menustruktur. Wenn nun ein Treeview geändert werden soll löschst Du den Eintrag (nicht den Type) und erstellst anhand der im Type gespeicherten Reihenfolge den View an passender Stelle neu. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eben deshalb wäre die Child-Parent-Variante auch angebracht ![]() Lies es dir noch einmal durch, wenn du nicht verstehst was ich meine, schau dir diesen Pseudo-Code an: Code: [AUSKLAPPEN] Klasse TNode
{ [name] als String [parent] als Zeiger auf TNode [handle] als Int } instanz := New TNode instanz.name := "1" instanz.parent := Null instanz.handle := 0 zweiteInstanz := New TNode zweiteInstanz.name := "2" zweiteInstanz.parent := instanz zweiteInstanz.handle := 0 Für alle Objekte der Klasse TNode tue { Wenn parent.handle == 0 dann: Erstelle TreeViewNode für den parent des aktuellen Knotens und speichere das handle in parent.handle Erstelle TreeViewNode für die aktuelle Instanz, gebe dabei parent.handle als parent an und speichere das neue Handle in handle } Edit: Ich war mal wieder zu langsam ![]() |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
fliege |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Aye, ich glaub, ich habs verstanden, danke.
Werds gleich morgen versuchen einzubauen. Fliege |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group