Einzelnen Beitrag anzeigen

Benutzerbild von CenBells
CenBells

Registriert seit: 30. Mär 2003
Ort: Kiel urspr. Lübeck
176 Beiträge
 
Delphi 7 Professional
 
#6

Re: VirtualStringView und selbst-referenzierende Ordner Quer

  Alt 17. Sep 2004, 13:39
hi,

erstelle mal ein objekt der folgenden struktur
Delphi-Quellcode:
  TDeinRecord = class
  private
    ...
  public
    property ID: Integer...;
    property ParentID: Integer ...;
    property FolderName: String;
  end;
Dann machst du ein query, mit der folgenden abfrage

Code:
SELECT *
  FROM DeineTabelle
 WHERE PArentID = 0
 ORDER BY ID
damit fängst du auf jeden fall mit den knoten an, die keinen vater haben
Das Ganze verbastelst du in einer prozedur...
Delphi-Quellcode:
procedure genBaum(AParentID: Integer = 0; AParentNode: PVirtualNode = nil); // brauchst beim ersten aufruf keine parenid übergeben
var
  LNode: PVirtualNode;
  LRec: TDeinRecord;
  LData: Pointer;
  ...
begin
  ...
  // hole query s.o.
  while not DeinQuery.Eof do begin
    LRec := TDeinRecord.create;
    LRec.Id := DeinQuery.FieldByName('Id').AsInteger;
    LRec.ParentID := DeinQuery.FieldByName('ParentId').AsInteger;
    LRec.FolderName := DeinQuery.FieldByName('Foldername').AsString;
    LNode := DeinBaum.AddChild(AParentNode);
    LData := DeinBaum.getNodeData(LNode);
    TObject(LData^) := LRec;
    // und jetzt noch rekursiv aufrufen
    genBaum(DeinQuery.FieldByName('Id').AsInteger, LNOde);
    DeinQuery.Next;
  end;
end;
ein beispielaufruf ist dann
genBaum(); Gruß
Ken
  Mit Zitat antworten Zitat