Einzelnen Beitrag anzeigen

karl der große

Registriert seit: 4. Mär 2005
40 Beiträge
 
#3

Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!

  Alt 14. Mär 2005, 20:39
Erstmal vielen Dank für Deine Antwort!

Jetzt hab ich ein grosses Problem

Delphi 6 bringt beim Compilieren in der Zeile

function TFormChildArchiv.AddVSTObject(avst: TCustomVirtualStringTree; aNode: PVirtualNode; aObject: TObject): PVirtualNode; den Fehler

Funktion benötigt Ergebnistyp Zur Erklärung der gesamte Source

Delphi-Quellcode:
unit Hauptprogramm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, DB, ADODB, BetterADODataSet, jpeg, ExtCtrls, StdCtrls,
  Mask, DBCtrls, Grids, DBGrids, VirtualTrees;

type
  TKalk = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Image1: TImage;
    ADO_kunden: TADOConnection;
    db_kunden: TBetterADODataSet;
    db_kundenNummer: TWideStringField;
    db_kundenUIDNummer: TWideStringField;
    db_kundenAnrede: TWideStringField;
    db_kundenAnrede2: TWideStringField;
    db_kundenGrad: TWideStringField;
    db_kundenVorname: TWideStringField;
    db_kundenNachname: TWideStringField;
    db_kundenName: TWideStringField;
    db_kundenBranche: TWideStringField;
    db_kundenBranche2: TWideStringField;
    db_kundenStrasse: TWideStringField;
    db_kundenLKZ: TWideStringField;
    db_kundenPLZ: TWideStringField;
    db_kundenOrt: TWideStringField;
    db_kundenTelefon: TWideStringField;
    db_kundenTelefon2: TWideStringField;
    db_kundenTelefax: TWideStringField;
    db_kundenZuhanden: TWideStringField;
    db_kundeneMail: TWideStringField;
    db_kundenWebsite: TWideStringField;
    Kunden: TDataSource;
    Seitenwahl: TPageControl;
    Objektauswahl: TTabSheet;
    Kundendaten: TTabSheet;
    TreeView1: TTreeView;
    ADO_objektkunde: TADOConnection;
    ADO_Objektverlauf: TADOConnection;
    db_objektkunde: TBetterADODataSet;
    db_objektverlauf: TBetterADODataSet;
    Objektkunde: TDataSource;
    Objektverlauf: TDataSource;
    db_objektkundeObjektnummer: TWideStringField;
    db_objektkundeKundennummer: TWideStringField;
    db_objektkundeObjektbeschreibung: TWideStringField;
    db_objektkundeAnrede: TWideStringField;
    db_objektkundeKunde: TWideStringField;
    db_objektkundeSuchname: TWideStringField;
    db_objektkundeBranche: TWideStringField;
    db_objektkundeBranche2: TWideStringField;
    db_objektkundeStrasse: TWideStringField;
    db_objektkundeOrt: TWideStringField;
    db_objektverlaufObjektnummer: TWideStringField;
    db_objektverlaufKundennummer: TWideStringField;
    db_objektverlaufArtdesObjektes: TWideStringField;
    db_objektverlaufArtdesObjektesNummer: TWideStringField;
    db_objektverlaufBezeichnung: TWideStringField;
    db_objektverlaufDatum: TDateTimeField;
    db_objektverlaufDateiablage: TWideStringField;
    db_objektverlaufSuchnummer: TWideStringField;
    db_objektkundeNummerbeschreibung: TWideStringField;
    db_kundenSuchname: TWideStringField;
    VirtualTreeView1: TVirtualStringTree;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

  TTreeDataClass = class
     private
        FKunde: string;
        FObjektnummer: string;
        FObjektbeschreibung: string;
     published
        property Kunde: string read FKunde write Fkunde;
        property Objektnummer: string read FObjektnummer write FObjektnummer;
        property Objektbeschreibung: string read FObjektbeschreibung write FObjektbeschreibung;
  end;

  PTreeData = ^TTreeData;
  TTreeData = record
     FObject: TObject;
  end;

var
  Kalk: TKalk;
  avst: TCustomVirtualStringTree;
  aNode: PVirtualNode;
  aObject: TObject;

implementation

{$R *.dfm}

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 := aObjekt;
end;

procedure TVirtualStringTree1.BuildTree;
var
   TreeObject: TTreeDataClass;
   Wurzel: PVirtualNode;
   begin
      vst.BeginUpdate;
      vst.NodeDataSize := SizeOf(TTreeData);
      vst.DeleteChildren(vst.RootNode, true);
      TreeObject := TTreeDataClass.Create;
      while not db_kunden.Eof do
      begin
         TreeObject.Kunde := db_kunden.fieldByName('Name').AsString;
         Wurzel := AddVSTObject(VST, Nil, TreeObject);
         while not db_objektkunde.eof do
         begin
            TreeObject.Objektnummer := db_objektkunde.fieldbyName('Objektnummer').AsString;
            TreeObject.Objektbeschreibung := db_objektkunde.fieldbyName('Objektbeschreibung').AsString;
            addvstObject(vst, Wurzel, TreeObject)
            db_objektkunde.next;
         end;
         db_kunde.next;
      end;
   end;
end;

end.
Besten Dank für Deine Mühen.

Karl
  Mit Zitat antworten Zitat