Einzelnen Beitrag anzeigen

Benutzerbild von fruity
fruity

Registriert seit: 2. Apr 2005
Ort: Bregenz
24 Beiträge
 
#3

Re: Nodes von Datenbank in TreeView einlesen

  Alt 10. Aug 2005, 09:30
Hallo Jens,

Ich als, noch Gruenling, wusste nicht was ich euch alles an Daten geben soll.
Danke schonmal fuer deine schnelle Hilfe

1.) Struktur:
Code:
 
ID  ParentID  Bezeichnung
1       -1         C
2       -1         C++
3       -1         Delphi
4        1         Grafik
5        1         System
6        2         Grafik
7        2         System
8        3         Grafik
9        3         System
10       1         Drucken
[Edit] Dies kann ueber mehrere Ebenen gehen und bekommt den bezug zur "ueber" Ebene durch die ParentID [/Edit]

2.) Aufgerufen werden die Daten ueber ein ADOQuery

3.)

Delphi-Quellcode:
procedure TFmHaupt.FillTreeView(TheView: TTreeView; TheData: TDataSet);

procedure MoveToParentNode(TheNode: TTreeNode);
    var x : Integer;
    begin
      for x := 0 to TreeView1.Items.Count-1 do begin
        if Assigned(TreeView1.Items[x].Data) then begin
          if PView(TreeView1.Items[x].Data).ID = PView(TheNode.Data).ParentID then begin
            TheNode.MoveTo(TreeView1.Items[x], naAddChild);
            Break;
          end;
        end;
      end;
    end;

var Root,AktNode : TTreeNode;
  i : Integer;
begin
  DMHaupt.QHauptTreeView.First;
  Root := TTreeNode.Create(TreeView1.Items);
  Root.Text := 'Demo';
  Root.Data := nil;

  for i := 0 to DMHaupt.QHauptTreeView.RecordCount -1 do
    begin
      AktNode := TTreeNode.Create(TreeView1.Items);
      AktNode.Data := new(PView);
      PView(AktNode.Data).ID := DMHaupt.QHauptTreeView.FieldByName('ID').AsInteger;
      PView(AktNode.Data).ParentID := DMHaupt.QHauptTreeView.FieldByName('ParentID').AsInteger;
      PView(AktNode.Data).Bezeichnung := DMHaupt.QHauptTreeView.FieldByName('Bezeichnung').AsString;
      DMHaupt.QHauptTreeView.Next;

      TreeView1.Items.Add(AktNode, PView(AktNode.Data).Bezeichnung);
    end;

  for i := 0 to TreeView1.Items.Count -1 do begin
    if Assigned(TreeView1.Items[i].Data) then begin
      if PView(TreeView1.Items[i].Data).ParentID <> 0 then MoveToParentNode(TreeView1.Items[i]);
    end;
  end;
end;
Rechtßreibvehler sind geistiegeß Eigentumm dess Autorren !!!
  Mit Zitat antworten Zitat