Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
Delphi 8 Architect
|
Re: Ausgeben von einer Datenbank mit TTreeView
30. Aug 2004, 11:40
Geht, unabhängig von der Sortierung:
Delphi-Quellcode:
type
TMyHardware = Record
Id : Integer;
IdParent : Integer;
end;
PMyHardware = ^TMyHardware;
procedure FillTreeView(TheView : TTreeView; TheData : TDataSet);
implementation
procedure FillTreeView(TheView : TTreeView; TheData : TDataSet);
// diese Prozedur verschiebt den übergebenen Knoten and
// die richtige Position im TreeView
procedure MoveToParentNode(TheNode: TTreeNode);
var x : Integer;
begin
for x := 0 to TheView.Items.Count-1 do begin
if Assigned(TheView.Items[x].Data) then begin
if PMyHardware(TheView.Items[x].Data).Id = PMyHardware(TheNode.Data).IdParent then begin
TheNode.MoveTo(TheView.Items[x],naAddChild);
Break;
end;
end;
end;
end;
// Beginn von FillTreeView:
var Root,AktNode : TTreeNode;
i : Integer;
begin
TheData.First;
Root := TTreeNode.Create(TheView.Items);
Root.Text := 'Hardware';
Root.Data := nil;
while not TheData.EOF do begin
AktNode := TTreeNode.Create(TheView.Items);
AktNode.Data := new(PMyHardware);
PMyHardware(AktNode.Data).Id := TheData.FieldByName('IntArtKatId').AsInteger;
PMyHardware(AktNode.Data).IdParent := TheData.FieldByName('IntArtKatParent').AsInteger;
TheData.Next;
end;
for i := 0 to TheView.Items.Count-1 do begin
if Assigned(TheView.Items[i].Data) then begin
if PMyHardware(TheView.Items[i].Data).IdParent <> 0 then MoveToParentNode(TheView.Items[i]);
end;
end;
end;
Aufruf mit:
FillTreeView(DeineTreeViewKomponente,DeineAdoQuerry);
Gruß
Tim Leuschner Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
|