AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi VirtualStringTree: Wie füge ich meine Daten am besten ein?
Thema durchsuchen
Ansicht
Themen-Optionen

VirtualStringTree: Wie füge ich meine Daten am besten ein?

Ein Thema von guidok · begonnen am 10. Jan 2008 · letzter Beitrag vom 10. Jan 2008
Antwort Antwort
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#1

VirtualStringTree: Wie füge ich meine Daten am besten ein?

  Alt 10. Jan 2008, 07:00
Hallo!

Ich habe in einer DB Daten in folgendem Format vorliegen:

10
10-10
10-10-100
10-10-200
10-20
10-20-100
...usw.

Das geht bis zu fünf Ebenen tief und ist ein idealer Fall für eine Baumdarstellung, aber wie bekomme ich die Daten am sinnvollsten in den Tree? Grundsätzlich weiß ich wie es funktioniert, es geht also nicht um eine grundlegende Einführung in die VST-Kompo. Mein Datenrecord existiert und ich kann auch Daten einfügen.

Delphi-Quellcode:
Data := vstListview.GetNodeData(vstListview.AddChild(nil)));
Data^.TP := TP;
Ich könnte es mir jetzt einfach machen und davon ausgehen, dass die Reihenfolge, in der die Daten angeordnet sind immer korrekt ist und anhand der Länge des Strings ermitteln, ob ich einen neuen Unterknoten brauche oder wieder in die oberste Ebene wechseln muss. Das finde ich aber nicht so gut.

Der zweite Weg wäre VOR dem Einfügen den entsprechenden übergeordneten Knoten zu finden, z.B. für 10-20-200 ist der übergeordnete Knoten 10-20. Aber wie suche ich im VST einen Knoten?

Ich steh hier ein wenig auf der Leitung und hoffe jemand von euch kann mich auf den rechten Weg zurückführen.

Gruß, guido
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: VirtualStringTree: Wie füge ich meine Daten am besten ei

  Alt 10. Jan 2008, 07:25
du startest beim rootnode.firstschild und durchläufst mit einer while schleife alle nodes.
zu jedem node holst du dir das data record wo du die caption hinterlegt hast und überprüfst ob diese caption deiner gesuchten entspricht. wenn ja dann hast du die abbruchbedingung für deine schleife. wenn nein, dann gehe weiter zum nächsten knoten.

pseudocode:

Delphi-Quellcode:
CaptionFound := False;
while Assigned(Node) and (not CaptionFound) do
begin
  NodeData := vst.GetNodeData(Node);
  if Assigned(NodeData) then
    CaptionFound := (NodeData.Caption = SearchedCaption);

  Node := vst.getNextNode(Node);
end;
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#3

Re: VirtualStringTree: Wie füge ich meine Daten am besten ei

  Alt 10. Jan 2008, 07:42
Ja klar, ich gehe alle Knoten von Anfang an durch. Aber: Gibt es eine Methode bei VST, mit der ich alle Knoten der Reihe nach abarbeiten kann. Ich kenne die Komponente noch nicht besonders gut und habe jetzt erst mal nur die Methode GetNext entdeckt laut Hilfe "Next node in the tree with initialization", was auch immer das bedeutet.
Ich bräuchte etwas, dass von Root ausgehend den nächsten Knoten auswählt bis in die unterste Ebene und beim nächsten Aufruf wieder den nächsten Knoten in der nächst höheren Ebene.

z.B.

10 (Next)
10-10 (Next)
10-10-100 (Next)
10-10-200 (Next)
10-20 (Next)
10-20-100 (Next)
20 (Next)
usw.
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#4

Re: VirtualStringTree: Wie füge ich meine Daten am besten ei

  Alt 10. Jan 2008, 07:44
genau das macht vst.getNextNode(Node)

die knoten sind intern mit einem absoluteindex versehen.
wenn du dir den mal mit ausgeben lässt siehst du dass vst.getnextnode(Node) immer zum nächsten absoluteindex springt.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#5

Re: VirtualStringTree: Wie füge ich meine Daten am besten ei

  Alt 10. Jan 2008, 09:31
Den Tree durchlaufen kannst du am schnellsten/besten mit der funktion iteratesubtree.

die funktion habe ich beim 2. stammtisch erklärt.
video's und source sind hier im forum.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#6

Re: VirtualStringTree: Wie füge ich meine Daten am besten ei

  Alt 10. Jan 2008, 14:48
Danke an alle! Mit IterateSubtree funktioniert es hervorragend.
  Mit Zitat antworten Zitat
Antwort Antwort


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 17:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz