Einfaches Bewegen von Objekten in TreeViews?

Übersicht BlitzBasic BlitzPlus

Neue Antwort erstellen

 

fliege

Betreff: Einfaches Bewegen von Objekten in TreeViews?

BeitragMi, Feb 13, 2008 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Feb 15, 2008 23:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Feb 16, 2008 11:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Joa, das einzige Problem das ich dabei habe ist, dass ich keinen Befehl zum verschieben der Elemente finde Sad
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. Urbach

ehemals "Basicprogger"

BeitragSa, Feb 16, 2008 15:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Feb 17, 2008 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

BladeRunner

Moderator

BeitragSo, Feb 17, 2008 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Urbach

ehemals "Basicprogger"

BeitragSo, Feb 17, 2008 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Eben deshalb wäre die Child-Parent-Variante auch angebracht Rolling Eyes

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 Wink
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

BeitragSo, Feb 17, 2008 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Aye, ich glaub, ich habs verstanden, danke.
Werds gleich morgen versuchen einzubauen.

Fliege

Neue Antwort erstellen


Übersicht BlitzBasic BlitzPlus

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group