![]() |
TreeView aus DB füllen
Hallo,
ich habe mal eine Frage zu TreeViews. Wie kann ich das ding mit Daten aus meiner DB befüllen. Oder erstmal wie kann ich es überhaupt befüllen. Ich habe in meiner DB drei Tabellen. Über die Mastersource sind diese miteinander verbunden. MFG Christian18 |
Re: TreeView aus DB füllen
Zitat:
Delphi-Quellcode:
Wie willst du die Daten der 3 Tabellen anzeigen?
TreeView.Items.Add<xxx>;
U.U. wäre ein DBtreeView hilfreich. |
Re: TreeView aus DB füllen
Ja die Daten will ich anzeiegn. Und da die einzelnen Tabellen mit der Mastsresource vcerbunden sind. ist ein treeview richtig gut geeignet.
MFG Christian18 |
Re: TreeView aus DB füllen
Meine Frage zielte daruf ab wie die die Daten in dem Treeview dargestellt werden sollen. Z.B. Erste Ebene aus tabelle ein, 2.Ebene aus Tabelle2 u.s.w.
Schau dir mal den VirtualTreeView an. |
Re: TreeView aus DB füllen
Ja genau so meine ich das. 1. Tabelle erste ebene usw.
Wo kann ich den Virtuellen Treeview finden. MFG Christian18 |
Re: TreeView aus DB füllen
Hi
Nimm lieber VST wenn es viele Datensätze (ab 1000) sind, denn TTreeview ist sehr langsam. Edit: Alle Tabelle mit einer Schleife durchlaufen und die Werte einzeln zuweisen. Gruss |
Re: TreeView aus DB füllen
|
Re: TreeView aus DB füllen
Hallo,
ich will trotzdem erstmal mit TTreeView arbeiten. Wie kann ich das ding denn jetzt mit Daten füllen?!?!? MFG Christian18 |
Re: TreeView aus DB füllen
Bei den Downloads gibt es auch diese
![]() |
Re: TreeView aus DB füllen
Also ich habe schon mal angefangen.
ich würde es so machen.
Delphi-Quellcode:
Und jetzt weiß ich bloß nicht weiter. Ich weiß jetzt nicht wie ich den ersten Knoten mache. dann die unterknoten und zu den unterknoten dann die einträge. wie kann ich das machen???
procedure TForm1.Button1Click(Sender: TObject);
begin Table1.First; while not Table1.Eof do begin while not Table2.Eof do begin while not Table3.Eof do begin Table3.Next; end; Table2.Next; end; Table1.Next; end; end; MFG Christian18 |
Re: TreeView aus DB füllen
Delphi-Quellcode:
Fügt Rooteinträge hinzu, für Untereinträge weitere Schleifen...
DeineQuery.First
while not DeineQuery.Eof do // Alle Datensätze durchlaufen begin TreeView1.Items.AddChild(nil,DeineQuery.FieldByName('Feldname').AsString); Next; end; Gruss |
Re: TreeView aus DB füllen
Ok,
das funktioniert erst einmal. Und wie kann ich jetzt die ersten Untereinträger aus der zweiten Tabelle machen??? Hier mein code:
Delphi-Quellcode:
MFG Christian18
procedure TFMain.Button1Click(Sender: TObject);
begin Gauge1.MinValue:=1; Gauge1.MaxValue:=Table1.RecordCount; while not Table1.Eof do begin TreeView1.Items.AddChild(nil, Table1.FieldByName('Feldname').AsString); while not Table1.Next; Gauge1.Progress:=Gauge1.Progress + 1; end; end; |
Re: TreeView aus DB füllen
In dem du AddChild auf auf den Knoten anwendest, welchem du einen Unterknoten zuordnen willst.
Delphi-Quellcode:
[Edit: DelphiTags vergessen]
procedure TFMain.Button1Click(Sender: TObject);
var node: TTreeNode; begin Gauge1.MinValue:=1; Gauge1.MaxValue:=Table1.RecordCount; while not Table1.Eof do begin node:= TreeView1.Items.AddChild(nil, Table1.FieldByName('Feldname').AsString); while not Table2.Eof do begin TreeView1.Items.AddChild(node, Table2.FieldByName('Feldname').AsString); Table2.Next; end; Table1.Next; Gauge1.Progress:=Gauge1.Progress + 1; end; end; |
Re: TreeView aus DB füllen
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Christian,
als erstes solltest du deine DataSets über die Eigenschaft MasterSource (TTable) bzw. DataSource (TQuery) hierarchisch verketten. Das Eintragen von Knoten auf beliebiger Ebene lässt sich folgendermaßen abstrahieren:
Delphi-Quellcode:
Die Initialisierung der TreeView kann im Ereignis OnCreate() der Form statt finden:
procedure AddNodes(nodes: TTreeNodes; nParent: TTreeNode; ds: TDataSet; fnDisplay, fnKey: String);
var iKey: Integer; sDisplay: String; begin nodes.BeginUpdate; with ds do try First; while not Eof do begin sDisplay := FieldByName(fnDisplay).AsString; iKey := FieldByName(fnKey).AsInteger; with nodes.AddChildObject(nParent, sDisplay, Pointer(iKey)) do HasChildren := True; Next; end; finally nodes.EndUpdate; end; end;
Delphi-Quellcode:
Wie du die Knoten auf den unteren Ebenen über das Ereignis OnExpanding() der TreeView eintragen lassen kannst, das zeigt die angehängte Demo.
procedure TDemoForm.FormCreate(Sender: TObject);
begin AddNodes(TreeView.Items, nil, QC, 'Company', 'CustNo'); end; Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz