![]() |
[VST] Daten hinzufügen ?
Moin,
kennt einer den Lischkeschen VirtualStringTree etwas besser als ich ? :mrgreen: Wo liegt hier der Fehler ?
Delphi-Quellcode:
Es sind anscheinend genauso viele Nodes vorhanden, wie Datensätze gefunden werden. Soweit stimmt das. Obwohl, wie kriegt man eigentlich die Anzahl raus ? :gruebel: Aber die heißen alle "Node". Stattdessen soll ein Feld angezeigt werden (siehe FieldByName).
type PMydata = ^TMyData;
TMyData = Record st : string; end; var Form1: TForm1; Data : PMyData; implementation {$R *.dfm} procedure TForm1.FormActivate(Sender: TObject); var NewNode : PVirtualNode; begin with DS do begin Close; SelectSQL.Text := 'SELECT * FROM TABLE'; Open; vst.NodeDataSize := SizeOf (TMyData); while not Eof do begin NewNode := vst.AddChild(nil); Data := vst.GetNodeData(NewNode); Data^.st := DS.FieldByName...; Next; end; end; |
Re: [VST] Daten hinzufügen ?
Zitat:
Delphi-Quellcode:
TVirtualNode = packed record
TotalCount, // sum of this node, all of its child nodes and their child nodes etc. Zitat:
|
Re: [VST] Daten hinzufügen ?
Zitat:
P.S.: TotalCount ist identisch mit "Count Records" in IBExpert. Das geht also so, wie vermutet. 8) |
Re: [VST] Daten hinzufügen ?
Ich mache es etwa so:
Delphi-Quellcode:
Siehe auch
procedure TForm1.TreeGetText(Sender: TBaseVirtualTree;
Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); begin Data := vst.GetNodeData(Node); CellText := Data.st; end; ![]() |
Re: [VST] Daten hinzufügen ?
Thx, so gehts. Das ist aber wohl nur die Spitze des Eisbergs. Der Thread hier wird lang werden. :mrgreen:
|
Re: [VST] Daten hinzufügen ?
Zitat:
|
Re: [VST] Daten hinzufügen ?
Du kennst dich damit aus ? Das ist gut. :-D Das nächste ist jetzt : Detaildaten hinzuzufügen. Wie/wo kann man unterscheiden, ob überhaupt welche da sind (-> + erscheint) oder nicht ? Dann fehlt noch das Ereignis beim klicken auf das +. Ich muss da eben dann die Detaildaten zusammensuchen und anzeigen.
|
Re: [VST] Daten hinzufügen ?
Zitat:
Delphi-Quellcode:
Im OnCollapsing kannst du dann die Kindernodes erzeugen.
VST.HasChildren[Node] := True
Falls Node.FirstChild nicht NIL ist, existieren schon Unterknoten. |
Re: [VST] Daten hinzufügen ?
D.h., ich muss selber ermitteln, ob Detaildaten vorhanden sind und dann HasChildren entsprechend setzen ? Dann müsste ich mal das Laufzeitverhalten überprüfen. Meine Testdaten liefern ca. 30.000 Haupt-Nodes und diese dürften jewils im Schnitt 10-30 Unternodes haben. Mit IsEmpty, Count (*), WHERE etc. dürfte das aber wohl gehen.
Allerdings ist folgendes noch unklar : bei den Hauptnodes brauche ich als Daten nur die Nr. Bei dn Detailnodes wird mehr gebraucht. Wie setze ich da konkret die Daten-Records ein (sizeof..) ? :shock: Ich muss das ja irgendwie unterscheiden. Und selbst wenn klar ist, ob ein + da ist oder nicht. Wie kriege ich nur dieses eine + aufgeklappt ? In der dann erscheinenden Liste müssten dann völlig andere Detaildaten drinstehen. Mal sehen, ob am "Tag der Arbeit" noch ein Ergebnis rauskommt. :mrgreen: |
Re: [VST] Daten hinzufügen ?
die Größe (SizeOf) setzt du einfach auf den größeren Record, oder du erstellst dir gleich Einen für beide
z.B.:
Delphi-Quellcode:
TMyNodeData = Record
Case Integer of 0: ( {Typen für Hauptnode} Nr: Integer; ); 1: ( {Typen für Detailnode} EtwasMehr... ); End; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19: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 by Thomas Breitkreuz