Autor Beitrag
darksign
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 58



BeitragVerfasst: So 25.02.07 15:34 
Hallo Leute!

Ich habe mir mit den Daten aus meiner Datenbank einen TreeView aufgebaut! In jeden Knoten habe ich einen Namen und eine Nummer gespeichert! Der ungefähre Aufbau meines Baumes sieht so aus:

Kunde1
..Projekt1
..Projekt2
..Projekt3
.....Gerät 1
.....Gerät 2
........Teil1
........Teil2
Kunde2
.....

Also, zusammengefasst: Es gibt mehrere Kunden, jeder Kunde hat mehrere Projekte, jedes Projekt mehrere Geräte, usw.
Nun möchte ich den Baum von der/den Wurzel(n) (also von den Kunden) beginnend durchlaufen, und die Daten jedes Elementes formatiert ausgeben und in einer Textdatei speichern!(der Text sollte dann so formatiert werden, dass man genau erkennen kann, welches Projekt zu welchem Kunden, welches Gerät zu welchem Projekt, usw... gehört!!!) Das mit dem Speichern wäre kein Problem für mich, nur bräuchte ich nun einen Algorithmus, mit dem ich den Baum durchlaufen kann, bin leider noch Delphi-Anfänger, und weiss nicht so recht, wie ich das machen sollte!

Ich hoffe, ihr könnt mir helfen!

Danke schon mal im vorraus
Robinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 275

WinXP
BDS 2006
BeitragVerfasst: So 25.02.07 15:45 
Hallo,

z.B. so:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
Procedure LoopThroughTree(Node : TTreeNode);
begin
  while Node <> nil do
  begin
    LoopThroughTree(Node.GetFirstChild);
    Node := Node.GetNextSibling;
  end;
end;

//Aufzurufen ist das dann folgendermassen:

LoopThroughTree(TreeView.GetFirstNode);


gruss, Rob

_________________
erare humanum est
darksign Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 58



BeitragVerfasst: So 25.02.07 16:01 
hmm, und wie weiss ich jetzt, ob der aktuelle Node ein "Kunde" oder ein Projekt ist, weil ich muss dann das ganze formatiert ausgeben! Darum muss ich wissen, auf welchem Knoten ich stehe, und welche Unterknoten zu diesem gehören!
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: So 25.02.07 16:13 
Hallo,

naja, dass hat doch mit dem eigentlichen traversieren nichts zu tun. Das ablegen der Daten (Typ, ...) kannst du zum Beispiel in der Eigenschaft Data ablegen.
Zusätzlich kannst du ja noch eine zweite Variable übergeben, mit dem du das aktuelle Level des Knotens bekommst!

Gruß Hape!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: So 25.02.07 16:50 
Hallo,

wenn Du aus der Datenbank das TreeView aufbaust, dann nimm die Datenbank doch auch als Grundlage für die Ausgaben.

Abgesehen davon, mit TreeView.SaveToFile kann man den Baum strukturiert in eine Textdatei speichern.

Wie soll denn der formatierte Text aussehen, erstell doch mal ein Beispiel?

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )