AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualTreeView und Baumstruktur

Ein Thema von Albi · begonnen am 22. Mär 2004 · letzter Beitrag vom 25. Mär 2004
 
DelphiDeveloper

Registriert seit: 9. Apr 2003
Ort: Köln
256 Beiträge
 
Delphi XE2 Enterprise
 
#3

Re: VirtualTreeView und Baumstruktur

  Alt 24. Mär 2004, 13:04
habe hier mal ein paar code schnipsel zusammengeschrieben wie ich das geamcht habe.

1.) Definition der Daten die ich brauche

Delphi-Quellcode:
 TTreeDataClass = class
  private
    FTestStr1: string;
    FDokID: integer;
    FKDID: integer;
    FICON: integer;
    FDOKNR: string;
    FMASUCH: string;
    FDokDatum: TDate;
    FUserInitial: string;
    FMandant: integer;
    FDokArt: TDokTypen;
    FDokKuerzel: string;
  published
    property TestStr1: string read FTestStr1 write FTestStr1;
    property DokID: integer read FDokID write FDokID;
    property KDID: integer read FKDID write FKDID;
    property ICON: integer read FICON write FICON;
    property DokDatum: TDate read FDokDatum write FDokDatum;
    property UserInitial: string read FUserInitial write FUserInitial;
    property Mandant: integer read FMandant write FMandant;
    property DOKNR: string read FDOKNR write FDOKNR;
    property MASUCH: string read FMASUCH write FMASUCH;
    property DokArt: TDokTypen read FDokArt write FDokArt;
    property DokKuerzel: string read FDokKuerzel write FDokKuerzel;
  end; //class

  PTreeData = ^TTreeData;
  TTreeData = record
    FObject: TObject;
  end;
2. Methode fuer das Hinzufuegen von Nodes
Delphi-Quellcode:
function TFormChildArchiv.AddVSTObject(avst: TCustomVirtualStringTree;
  aNode: PVirtualNode; aObject: TObject): PVirtualNode;
var
  Data: PTreeData;
begin
  Result := avst.AddChild(aNode);
  avst.ValidateNode(Result, False);
  data := avst.GetNodeData(Result);
  data^.FObject := aObject;
end;
3. Füllen der Datenstrukturen mit werten aus der DB

Delphi-Quellcode:
procedure TFormChildArchiv.BuildTree;
var
  TreeObject: TTreeDataClass;
  Wurzel: PVirtualNode;
begin

  vst.BeginUpdate;

  vst.NodeDataSize := SizeOf(TTreeData);
  vst.DeleteChildren(vst.RootNode, true);

  if markiert(ANGEBOT) then
  begin
    
    // Root eintragen
    TreeObject := TTreeDataClass.Create;
    try
      TreeObject.DokArt := ANGEBOT;
      TreeObject.DokKuerzel := 'ANG';
      TreeObject.TestStr1 := GetDKBEZ(GetEnumName(TypeInfo(TDokTypen),
        ord(TreeObject.Dokart))) +
        '(' + IntTostr(IB_QryAngebote.RecordCount) + ')';

      if IB_QryAngebote.RecordCount > 0 then
        TreeObject.Icon := 3
      else
        TreeObject.Icon := 12;

      Wurzel := addvstObject(vst, nil, TreeObject);
      // jetzt Detail eintragen
      with IB_QryAngebote do
      begin
        while not Eof do
        begin
          TreeObject := TTreeDataClass.Create;
          try
            TreeObject.TestStr1 := FieldByName('KU_SUCH').AsString;
            TreeObject.DokID := FieldByName('AK_ID').AsInteger;
            TreeObject.KDID := FieldByName('AK_KU_ID').AsInteger;
            TreeObject.DokDatum := FieldByName('AK_DATUM').asdate;
            TreeObject.UserInitial := FieldByName('USER_INITIAL').asString;
            TreeObject.Mandant := FieldByName('AK_MANDANT').AsInteger;
            TreeObject.DOKNR := FieldByName('AK_NR').asstring;
            // TreeObject.Icon := 17;
            addvstObject(vst, Wurzel, TreeObject)
         except
            TreeObject.free
          end; //try
          Next;
        end; //while
      end;
    except
      TreeObject.free
    end; //try
    IB_QryAngebote.Close;
  end; // if Angebote eintragen


  if markiert(ANFRAGE) then
  begin
    
    // Root eintragen
    TreeObject := TtreeDataClass.Create;
    try
      TreeObject.dokart := ANFRAGE;
      TreeObject.DokKuerzel := 'ANF';
      TreeObject.TestStr1 :=
        GetDKBEZ(GetEnumName(TypeInfo(TDokTypen),
        ord(TreeObject.Dokart))) +
        '(' + IntTostr(IB_QryAnfragen.RecordCount) + ')';
      if IB_QryAnfragen.RecordCount > 0 then
        TreeObject.Icon := 3
      else
        TreeObject.Icon := 12;
      Wurzel := addvstObject(vst, nil, TreeObject);
      // jetzt Detail eintragen
      with IB_QryAnfragen do
      begin
        while not Eof do
        begin
          TreeObject := TTreeDataClass.Create;
          try
            TreeObject.TestStr1 := FieldByName('KU_SUCH').AsString;
            TreeObject.DokID := FieldByName('AN_ID').AsInteger;
            TreeObject.KDID := FieldByName('KU_ID').AsInteger;
            TreeObject.DokDatum := FieldByName('AN_SERVERDATUM').asdate;
            TreeObject.UserInitial := FieldByName('USER_INITIAL').asString;
            TreeObject.Mandant := FieldByName('MANDANT_ID').AsInteger;
            TreeObject.DOKNR := FieldByName('AN_NR').asstring;
            // TreeObject.Icon := 17;
            addvstObject(vst, Wurzel, TreeObject);
          except
            TreeObject.free;
          end; //try
          Next;
        end; // while
      end; // with
    except
      TreeObject.Free
    end; //try
    IB_QryAnfragen.Close;
  end; // if
unter 3 steht noch viel balast das entscheidende fuer die Baumstruktur
ist addvstObject
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz