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;