![]() |
Datenbank: ACCESS • Version: 2000 • Zugriff über: ADO
TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Hallo an Alle!
Ich hab ein großes Problem! Ich bin Delphi-Anfänger und hab eine kleine Applikation geschrieben mit einem TTreeView. Es funktioniert, aber: Erstens hab ich Performanceprobleme und zweitens kann ich einige wichtige Dinge damit nicht machen. Nun hab ich hier im Forum den Verweis auf TVirtualStringTree gesehen, dieses downgeloadet, ca. 1 Stunde mit der Installation verbraten :twisted: und jetzt weiß ich nicht mehr weiter :wall: . Wie kann ich TTreeView nach TVirtualStringTree umsetzen. Zur Erläuterung mein Code vom TTreeView:
Delphi-Quellcode:
Hoffentlich kann mir jemand helfen, wär sehr wichtig für mich.
procedure Tstamm.TreeViewInit;
var tv: TTreeView; n: TTreeNode; m: TTreeNode; ipSender : string; begin tv := TreeView1; tv.Items.BeginUpdate; tv.Items.Clear; db_database1.First; db_database2.First; db_database3.First; while not db_database1.Eof do begin n := tv.Items.AddChild(nil,db_database1.FieldByName('Name').AsString); while not db_database2.eof do begin m := tv.Items.AddChild(n, db_database2.FieldByName('Nummerbeschreibung').AsString); while not db_database3.eof do begin ipSender := db_database3.FieldByName('Bezeichnung').AsString; with tv.Items.AddChild(m, ipSender) do begin end; db_database3.Next; end; db_database2.Next; end; db_database1.Next; end; tv.FullExpand; tv.Items.EndUpdate; end; Besten Dank im Voraus an Alle, die sich meinetwegen bemühen. LG Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Guten morgen,
Du kannst Dir ja mal diesen Thread anschauen. Das sollte deine Fragen beantworten. ![]() |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Erstmal vielen Dank für Deine Antwort!
Jetzt hab ich ein grosses Problem Delphi 6 bringt beim Compilieren in der Zeile
Delphi-Quellcode:
den Fehler
function TFormChildArchiv.AddVSTObject(avst: TCustomVirtualStringTree; aNode: PVirtualNode; aObject: TObject): PVirtualNode;
Delphi-Quellcode:
Zur Erklärung der gesamte Source
Funktion benötigt Ergebnistyp
Delphi-Quellcode:
Besten Dank für Deine Mühen.
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. Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Die Funktion bzw. Prozedur Klassifizieren sind falsch
function TFormChildArchiv.AddVSTObject... procedure TVirtualStringTree1.BuildTree; muss wohl in deiner Klasse TKalk definiert werden. stichwort: Methoden werden in einer Klassendeklaration als Funktions- oder Prozedurköpfe ohne Rumpf angegeben. Die definierenden Deklarationen folgen dann an einer anderen Stelle im Programm. also TKalk = class(TForm) ... function AddVSTObject(avst: TCustomVirtualStringTree; aNode: PVirtualNode; aObject: TObject): PVirtualNode; procedure BuildTree; ... end; und im implemtationsteil: function TKalk.AddVSTObject(avst: TCustomVirtualStringTree; aNode: PVirtualNode; aObject: TObject): PVirtualNode; ... procedure TKalk.BuildTree; ... mfg DD |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Vielen Dank - jetzt hab ich das kapiert.
hab aber schon wieder eine Frage: in der Zeile
Delphi-Quellcode:
den Fehler Undefinierter Bezeichner.'vst'
vst.BeginUpdate;
Sorry an Alle, wenn ich wegen solcher 'einfacher' Fragen nerve, aber ich bin blutiger Anfänger und lerne jeden Tag eine Menge dazu. Danke Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
VST steht hier für "VirtualStringTree" und muss entsprechend mit dem Namen _DEINES_ VST ersetzt werden.
Ein gutes Einsteiger-Tutorial zum VST findest du auch hier: ![]() Lass dich nicht entmutigen von dem VST. Der Einstieg ist etwas hart und ungewohnt, wenn's jedoch einmal Klick gemacht hat und du das Potential damit erkennst, willste garnicht mehr ohne das Teil arbeiten. :mrgreen: Grüße, Mario |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Supppppeeerrrr. :hello: :hello: :hello:
Danke. Funzt bis dato fehlerfrei. Jetzt muss ich mich darum kümmern, die Daten anzuzeigen. Nochmals vielen Dank. LG Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
So bin schon ein wenig weiter.
Jetzt hab ich noch ein Problem mit dem Icon Code:
Delphi-Quellcode:
In der Zeile
procedure Tkalk.vstGetImageIndex(Sender: TBaseVirtualTree; Node: PVirtualNode;
Kind: TVTImageKind; Column: Integer; var Ghosted: Boolean; var ImageIndex: Integer); var Data: PTreeData; begin Data := Sender.GetNodeData(Node); case Kind of ikNormal, ikSelected: if (Column = 0) and (Node.Parent = Sender.RootNode) then ImageIndex := TTreeDataClass(Data.FObject).Icon; ikState: case Column of 0: if Node.Parent <> Sender.RootNode then ImageIndex := 5; end; end; end;
Delphi-Quellcode:
bringt er folgende Fehlermeldung:
ImageIndex := TTreeDataClass(Data.FObject).Icon;
Delphi-Quellcode:
Undefinierter Bezeichner 'Icon'
Und dann noch eine Frage: Hab jetzt alle Proceduren angelegt. Wie kann ich das Ding jetzt anwerfen. Er zeigt mir noch nichts an. Gruß Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Zur 2. Frage: Es gibt ein Ereignis "OnGetText". Dort musst Du selber den Text zuweisen.
Zur 1. Frage: Hier Deine Klasse:
Delphi-Quellcode:
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;
Delphi-Quellcode:
Wo in Deinem Typecast soll hier 'Icon' hinterlegt sein?
ImageIndex := TTreeDataClass(Data.FObject).Icon;
So, und warum findet er jetzt nix? ;-) |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Yo, is ja klar, dass er dir die Fehlermeldung bringt. Icon ist ja auch keine Eigenschaft in der TTreeDataClass-Klasse. ;)
Lies und befolge das Tutorial. Dann verstehst du auch die Grundlagen, wie und warum der VST wann was anzeigt. |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Vielen Dank!
Lern mit jedem Fehler mehr dazu. Gruß Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
So hab jetzt alles bei den entsprechenden Events eingetragen, aber kann mir einer sagen wo ich den Buildtree hinstelle.
Der steht bei mir noch irgenwo im Raum, dadurch dürfte es auch geschehen, dass ich nur ein weisses Viereck bekomme. Danke für Eure Hilfe Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Bin wieder einen Schritt weiter - hab das Buildtree in den Create des Formulars geändert, jetzt zeigt er mir immerhin schon was an,
leider das falsche. Er zeigt keine Daten, sondern nur bei jedem Eintrag das Wort Node an. Wenn ich einen Knoten öffne, geht nichts mehr und wenn ich das Formular schliesse, das einzige was noch funktioniert, bringt er folgende Meldung:
Delphi-Quellcode:
Bin ratlos, hat jemand eine Idee
Exception EAccessViolation in Modul Kalkulation.exe bei FFFFF008.
Zugriffsverletzung bei Adresse 00000008. Lesen von Adresse 00000008. Danke Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Tutorial durchgucken. Wenn du das Prinzip nicht verstanden hast, helfen dir einzelne Problemlösungen nur soweit, bis du auf das nächste Problem stößt.
|
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Es ist zum verzweifeln - hab jetzt alles durchgesehen, einen Tag Tutorial studiert, aber ich komm nicht drauf.
VST funktioniert eigentlich, nur zeigt er nicht die Daten an, sondern schlicht an jeder Stelle nur das Word Node. Die Struktur würde passen, d.h. die Anzahl der 'Nodes', die Knoten und die Anzahl der Childs je Knoten passt exakt zur Datenbank, nur hab ich folgendes Problem: Anstatt Anzeige der Daten das Wort 'Node' und wenn ich einen Knoten öffne, dann hängt sich das Prog auf. Nochmals der akutelle Source
Delphi-Quellcode:
Hoffentlich findet sich eine gute Seele, die sich meinem Problem annimmt und mir den entscheidenden Tip gibt.
unit Hauptkalkulation;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, DB, ADODB, BetterADODataSet, jpeg, ExtCtrls, StdCtrls, Mask, DBCtrls, Grids, DBGrids, VirtualTrees; type PTreeData = ^TTreeData; TTreeData = record FObject : TObject; 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; 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; Kunden: TDataSource; Seitenwahl: TPageControl; Objektauswahl: TTabSheet; Kundendaten: TTabSheet; ADO_objektkunde: TADOConnection; ADO_objektarchitekt: TADOConnection; ADO_objektparameter: TADOConnection; ADO_Objektbetrag: TADOConnection; ADO_Objektverlauf: TADOConnection; db_objektkunde: TBetterADODataSet; db_objektarchitekt: TBetterADODataSet; db_objektparameter: TBetterADODataSet; db_objektbetrag: TBetterADODataSet; db_objektverlauf: TBetterADODataSet; Objektkunde: TDataSource; objektarchitekt: TDataSource; Objektparameter: TDataSource; Objektbetrag: 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_objektkundeTelefonnummer: TWideStringField; db_objektkundeTelefonnummer2: TWideStringField; db_objektkundeTelefaxnummer: TWideStringField; db_objektkundeHandynummer: TWideStringField; db_objektverlaufObjektnummer: TWideStringField; db_objektverlaufKundennummer: TWideStringField; db_objektverlaufArtdesObjektes: TWideStringField; db_objektverlaufArtdesObjektesNummer: TWideStringField; db_objektverlaufBezeichnung: TWideStringField; db_objektverlaufDatum: TDateTimeField; db_objektverlaufDateiablage: TWideStringField; db_objektkundeNummerbeschreibung: TWideStringField; db_kundenSuchname: TWideStringField; vst: TVirtualStringTree; function AddVSTObject(avst: TCustomVirtualStringTree; aNode: PVirtualNode; aObject: TObject): PVirtualNode; procedure vstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); procedure vstCompareNodes(Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer); procedure vstHeaderClick(Sender: TVTHeader; Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Kalk: TKalk; implementation {$R *.dfm} function Tkalk.AddVSTObject(avst: TCustomVirtualStringTree; aNode: PVirtualNode; aObject: TObject): PVirtualNode; var Data: PTreeData; begin Result := avst.Addchild(aNode); data := avst.GetNodeData(Result); avst.ValidateNode(Result, False); data^.FObject := aObject; end; procedure Tkalk.vstFreeNode(Sender: TBaseVirtualTree; Node: PVirtualNode); var Data: PTreeData; begin Data := vst.GetNodeData(Node); if not Assigned(Data) then exit; Data.FObject.Free; end; procedure TKalk.vstCompareNodes(Sender: TBaseVirtualTree; Node1, Node2: PVirtualNode; Column: TColumnIndex; var Result: Integer); var Data1, Data2: PTreeData; begin Data1 := Sender.GetNodeData(Node1); Data2 := Sender.GetNodeData(Node2); case Column of 0: Result := CompareText(TtreeDataClass(Data1.FObject).FKunde, TtreeDataClass(Data2.FObject).FKunde); 1: Result := CompareText(TTreeDataClass(Data1.FObject).FObjektnummer, TtreeDataClass(Data2.FObject).FObjektnummer); 2: Result := CompareText(TTreeDataClass(Data1.FObject).FObjektbeschreibung, TtreeDataClass(Data2.FObject).FObjektbeschreibung); end; end; procedure TKalk.vstHeaderClick(Sender: TVTHeader; Column: TColumnIndex; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin with Sender, TreeView do begin if SortColumn > NoColumn then Columns[SortColumn].Options := Columns[SortColumn].Options + [coParentColor]; if Column = 0 then SortColumn := NoColumn else begin if (SortColumn = NoColumn) or (SortColumn <> Column) then begin SortColumn := Column; SortDirection := sdAscending; end else if SortDirection = sdAscending then SortDirection := sdDescending else SortDirection := sdAscending; Columns[SortColumn].Color := $F7F7F7; SortTree(SortColumn, SortDirection, False); end; end; end; end; procedure TKalk.vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); var Data: PTreeData; begin Data := Sender.GetNodeData(Node); if data.FObject <> nil then begin case Column of 0: begin if Node.Parent = Sender.RootNode then celltext := TTreeDataClass(Data.FObject).FKunde else celltext := TTreeDataClass(Data.FObject).FKunde end; 1: if Node.Parent = Sender.RootNode then celltext := '' else celltext := TTreeDataClass(Data.FObject).FObjektnummer; 2: if Node.Parent = Sender.RootNode then celltext := '' else celltext := TTreeDataClass(Data.FObject).FObjektbeschreibung; end; end; end; procedure TKalk.FormCreate(Sender: TObject); 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_kunden.next; end; end; end. Vielen, vielen Dank. LG Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Hast du das Tutorial auch nachgemacht?
Das Ereignis scheint auch korrekt vergeben zu sein. Hm. Probier mal, in der Ereignis-Prozedur für OnGetText lediglich
Delphi-Quellcode:
Funktioniert das? Wenn ja, stimmt etwas mit dem Aufbau deiner Verzweigungen nicht (habs mir nicht genau durchgeschaut).
procedure TKalk.vstGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); var Data: PTreeData; begin CellText := 'Test'; { ... Restlichen Code auskommentieren } end; Grüße, Mario |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Hallo,
versuche mal folgendes Zitat:
|
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Erst mal vielen Dank an Alle für Eure Mühen.
Also ich hab
Delphi-Quellcode:
eingefügt. Der Effekt ist, dass er sich im Prog nicht mehr aufhängt. Aber wenn ich das Programm schliesse kommt nach wie vor die Meldung:
vst.endupdate;
Delphi-Quellcode:
Ansonsten kann ich die Knoten öffnen, schliessen, nur als Bezeichnung ist immer noch Node da.
Exception EAccessViolation in Modul Kalkulation.exe bei FFFFF008.
Zugriffsverletzung bei Adresse 00000008. Lesen von Adresse 00000008. Hab dann versucht, den celltext auf
Delphi-Quellcode:
umzuändern.
celltext := 'Test1'
Effekt keiner, das Wort Node ist nach wie vor an allen Knotenpunkten da. Gruss Karl |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
:hello: :hello: :hello: :hello: :hello: :hello: :hello:
Ich hab's. Danke für Eure Hilfe!!!!! Für alle die ein ähnliches Problem haben. Hier das, was ich falsch gemacht habe. Also ich hab vergessen unter Header-Columns die Colums anzulegen. Und das mit dem Fehler - hier der Code der funktioniert:
Delphi-Quellcode:
procedure TKalk.FormCreate(Sender: TObject);
var TreeObject: TTreeDataClass; Wurzel: PVirtualNode; begin vst.BeginUpdate; vst.NodeDataSize := SizeOf(TTreeData); vst.DeleteChildren(vst.RootNode, true); while not db_kunden.Eof do begin TreeObject := TTreeDataClass.Create; TreeObject.Kunde := db_kunden.fieldByName('Name').AsString; Wurzel := AddVSTObject(VST, Nil, TreeObject); while not db_objektkunde.eof do begin TreeObject := TTreeDataClass.Create; TreeObject.Objektnummer := db_objektkunde.fieldbyName('Objektnummer').AsString; TreeObject.Objektbeschreibung := db_objektkunde.fieldbyName('Objektbeschreibung').AsString; addvstObject(vst, Wurzel, TreeObject); db_objektkunde.next; end; db_kunden.next; end; vst.EndUpdate; end; Vielen Dank für Eure Mühen - bis zum nächsten Problem. :wink: Werde jetzt weitertüfteln. :coder: |
Re: TTreeView nach TVirtualStringTree umsetzen - Hilfe !!!
Tjaja, die Freuden und Leiden des Programmierers :mrgreen:
:cheers: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:00 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 by Thomas Breitkreuz