Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TreeView aus DB füllen (https://www.delphipraxis.net/70879-treeview-aus-db-fuellen.html)

aschne1 6. Jun 2006 12:09

Re: TreeView aus DB füllen
 
Delphi-Quellcode:
DeineQuery.First
while not DeineQuery.Eof do                                         // Alle Datensätze durchlaufen
begin
  TreeView1.Items.AddChild(nil,DeineQuery.FieldByName('Feldname').AsString);
  Next;
end;
Fügt Rooteinträge hinzu, für Untereinträge weitere Schleifen...

Gruss

Christian18 6. Jun 2006 12:25

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:
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;
MFG Christian18

mkinzler 6. Jun 2006 12:45

Re: TreeView aus DB füllen
 
In dem du AddChild auf auf den Knoten anwendest, welchem du einen Unterknoten zuordnen willst.

Delphi-Quellcode:
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;
[Edit: DelphiTags vergessen]

marabu 6. Jun 2006 12:51

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:
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;
Die Initialisierung der TreeView kann im Ereignis OnCreate() der Form statt finden:

Delphi-Quellcode:
procedure TDemoForm.FormCreate(Sender: TObject);
begin
  AddNodes(TreeView.Items, nil, QC, 'Company', 'CustNo');
end;
Wie du die Knoten auf den unteren Ebenen über das Ereignis OnExpanding() der TreeView eintragen lassen kannst, das zeigt die angehängte Demo.

Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz