Autor Beitrag
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 19.02.03 18:01 
Hi,

ich möchte gerne die Eigenschaft SaveToFile vom TreeView selber realisieren um die Daten in eine Datenbank zu schreiben. Damit ich dort die Daten weiterverarbeiten kann. Der TreeView soll nur für den Anwender als bessere Übersicht sein. Hat jemand eine Idee wie ich das machen kann ?
Horst
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Mi 19.02.03 19:30 
Schau mal unter
www.delphi-forum.de/...=4689&highlight=
nach.

ich hatte schon mal so eine Ähnliche Frage gestellt.

Gruß

Horst

:wave:
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Mi 19.02.03 19:35 
Hi Horst,

danke erstmal für die Antwort, nur bringt mich das nicht richtig weiter. Wenn Du einen TreeView mit SaveToFile abspeicherst in eine TXT-Datei, sieht die TXT nachher so aus:
Zitat:

Test_1
Test_1_1
Test_1_2
Test_2
Test_2_1
Test_2_1_1
Test_2_2
Test_3


So dieses muß ja irgendwie gemacht werden, nur ist meiner Frage wie wird das abgespeichert ? Wie sieht der Sourcecode dazu aus ? Ich habe nämlich keinen blassen schimmer. Ich würde dann ganz gerne diesen Sourcecode umschreiben um die Werte in ein Datenbank einzutragen.
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Do 20.02.03 20:36 
Kann mir denn keiner weiterhelfen ? Ich habe jetzt folgende Tabelle aus dem Treeview erstellt :
Zitat:

+----+--------+---------+--------+------------+
| NR | ITEMNR | CHILDNR | MAINNR | ABTEILUNG |
+----+--------+---------+--------+------------+
| 27 | 0 | 1 | 1 | Test_1 |
| 28 | 1 | 2 | 1 | Test_1_1 |
| 29 | 2 | 2 | 1 | Test_1_2 |
| 30 | 3 | 1 | 2 | Test_2 |
| 31 | 4 | 2 | 2 | Test_2_1 |
| 32 | 5 | 3 | 2 | Test_2_1_1 |
| 33 | 6 | 3 | 2 | Test_2_1_2 |
| 34 | 7 | 2 | 2 | Test_2_2 |
| 35 | 8 | 3 | 2 | Test_2_2_1 |
| 36 | 9 | 3 | 2 | Test_2_2_2 |
| 37 | 10 | 1 | 3 | Test_3 |
+----+--------+---------+--------+------------+


So jetzt möchte ich gerne diese Tabelle wieder in den Treeview einlesen, ich komme nur bis zum 2 Child. Die Werte die als Child 3 haben, schreibt er mir in Child 2. Hat jemand eine Idee warum ?
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Do 20.02.03 20:54 
Titel: Warum nicht so ?
Hallo,
wenn du schon eine Tabelle hast, schreib doch die TreeView eben in ein Feld rein (saveToStream/loadFromStream). Sparst ne menge zeit zum Coden der korrekten Einträge. Mußt halt nur dafür sorgen, das Tree und Rest der Daten konsistent sind (.z.b. 1:n Beziehung in Tabellen)
Grüße
MSCH
Horst
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 120



BeitragVerfasst: Do 20.02.03 21:02 
ich denke, dann musst du das anders machen.
am besten "hangelst" du dich durch alle Nodes und
schreibst die parameter in deine Datenbank, wie
in dem nachfolgenden Beispiel angedeutet:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
var
  cText : string;
  CurItem: TTreeNode;
begin
  CurItem := TreeView1.Items.GetFirstNode;
  while CurItem <> nil do
  begin
    cText:=CurItem.Text;
    // Nodetext kann jetzt abgespeichert werden
    CurItem := CurItem.GetNext;
  end;
end;


komme ich der Sache schon näher :?:

Gruß

Horst

:wink2:
bis11 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: Do 20.02.03 21:10 
Irgendwie stehe ich jetzt komplett auf dem Schlauch. Ich bin einfach den Tree durchgegangen anhand der Anzahl der Einträge. Die habe ich nach und nach abgearbeitet und habe beim schreiben in die Datenbank noch das Child-Level und das Main-Level hinzugefügt. Für das Child-Level habe ich die folgende Funktion genommen :
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function NodeGetChildLevel(Tree: TTreeView; Node:TTreeNode):Integer;     
var
  tmpNode : TTreeNode;
begin
  Result := 0;
  tmpNode := Node;
  while tmpNode<> nil do begin
    Result := Result + 1;
    tmpNode := tmpNode.Parent;
  end;
end;


Für das Main-Level folgenden Code :
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function NodeGetMainNodeLevel(Tree: TTreeView; Node:TTreeNode):Integer;        
var
  tmpNode : TTreeNode;
begin
  Result := 0;
  tmpNode := Tree.Items[0];
  while tmpNode <> nil do begin
    if tmpNode <> nil then
      if tmpNode.Parent = nil then Result := Result + 1;
    if tmpNode = Node then Exit;
    tmpNode := tmpNode.GetNext;
  end;
end;


So ist die Tabelle zusammengekommen. Nun möchte ich das wieder Rückgängig machen. Habe ich vielleicht in dem ganzen einen grundsätzlichen denkfehler drin ?