Baum-wie Datastructure (für die Verwendung mit VirtualTreeview)

Komme ich zu dem Punkt, wo ich aufhören müssen der Speicherung meiner Daten in eine VCL-Komponente, und eine "zugrunde liegende datastructure", wie Herr Rob Kennedy vorgeschlagen.

Zunächst, diese Frage ist "wie mache ich eine zugrunde liegende datastructure". 🙂

Meine Hierarchie besteht aus 2 Ebenen von Knoten.

Gerade jetzt, ich gehe durch meine Sachen durch looping rootnodes, wobei ich eine loop-thru des Stammknotens ist childnodes, zu bekommen, was ich brauche (Daten). Ich würde lieben im Stande zu sein, die zum speichern aller meiner Daten in eine so genannte Zugrunde liegende Datastructure, so dass ich können Sie leicht ändern Sie die Einträge, die Verwendung von threads (ich glaube, ich bin in der Lage, das zu tun?)

Jedoch, wenn die Schleife durch meine Einträge (jetzt), die Ergebnisse sind abhängig von den Knoten, die Checkstate - wenn ich mich mit einer zugrunde liegenden Daten-Struktur, wie weiß ich, ob mein Knoten markiert ist oder nicht, wenn Ihr meine datastructure ich eine loop-thru, und nicht meine Knoten?

Sagen wir, ich wollte mit 2 Ebenen.

Wäre dies die Eltern:

TRoot = Record
  RootName : String;
  RootId : Integer;
  Kids : TList; //(of TKid)
End;

Und das Kind:

TKid = Record
  KidName : String;
  KidId : Integer;
End;

Das ist im Grunde das, was ich jetzt tun soll. Kommentare, dass dies nicht die beste Lösung, so bin ich für Vorschläge offen. 🙂

Ich hoffe, Sie verstehen meine Frage(N). 🙂

Dank!

  • IMHO, deine Frage ist nicht verständlich für alle, die nicht gelesen haben, Ihre vorherigen Fragen, für was Sie nicht links (als letzten Ausweg), aber es ist besser, wenn Sie schreiben jede Frage, als ob es die einzige Frage, die Sie hier gepostet. So wird die Frage leicht beantwortbar durch jedermann, aber am wichtigsten ist, es wird verständlich sein für den zukünftigen Leser.
  • Ich bin froh, dass Sie mir sagen, werden versuchen zu finden, den vorherigen post. 🙂
  • bearbeitet. 🙂
  • Nichts für ungut, aber wenn ich habe Dinge richtig, Sie sind ein Anfänger-Programmierer-aber wenn Sie halten Sie das lernen, werden Sie (in ein paar Jahren), master-Programmierung auf einer viel anspruchsvolleren Ebene. Bis dann, ich denke aber, es ist nicht klug, zu versuchen zu hart, die Dinge, wenn es einfachere alternativen. Sind Sie wirklich sicher, dass Sie nicht verwenden können, eine TListBox? Ich meine, wenn Sie brauchen eine fortschrittliche Steuerung, um die Daten anzuzeigen, wie das Virtual TreeView, sollten Sie zunächst die Daten in etwas "unterlegt datastructure".
  • (Forts.) Eine "Zugrunde liegende Datastructure" ist nicht eine Magische Sache, die im Zusammenhang mit der virtual treeview, sondern etwas, was Sie die ganze Zeit bei der Programmierung auf einer höheren Ebene-alles, was Sie tun, ist zu verwalten, die Daten mittels algorithmen.
  • Diese Frage nützlich aussieht: stackoverflow.com/questions/1841621
  • Ja, ich bin ein Anfänger. Ich habe bereits meine Sachen gespeichert, die in den Aufzeichnungen, aber meine Daten zerstört werden mit dem Baum.
  • 1, weil Sie akzeptiert die Antwort ist falsch: Sie wirklich brauchen, um zu lernen, über Daten-Strukturen, es ist der einzige Weg, um vorwärts zu bewegen. Doch Sie entschied sich (wieder) der einfachste Pfad, den Sie ausgewählt, um die Verwendung von Datenbank-Technologie und vermeiden Sie die harte Arbeit. Normalerweise würde ich mich nicht, aber nach deinen Fragen, die ich bemerkt, Sie es geschafft, einige interessante Sachen zu entwickeln, es gibt keinen Zweifel in meinem Kopf, die Sie behandeln können eine Baum-Datenstruktur. Nehmen Sie diese downvote wie ein kick in die richtige Richtung.
  • Ich habe nur markiert Sie als Antwort, denn wenn ich nicht, wird jemand kommen und mir sagen, zu akzeptieren, dass man als Antwort, wie das Letzte mal. Ich will nicht Aussehen wie ein Stich, der nicht apreciate jede Anstrengung. Entfernt habe ich es jetzt, dass ich weiß, dass ich kriegen es so oder so. Meine Frage ist über Datenstrukturen, aber da war ich kurze Zeit, ich beschloss, nest einige TLists.
  • Doch Sie entschied sich (wieder) der einfachste Pfad, den Sie ausgewählt, um die Verwendung von Datenbank-Technologie und vermeiden Sie die harte Arbeit. ich sehen, warum Sie machen diese Annahme, aber mein Kommentar oben nicht anders angegeben. Auch ich bin noch ziemlich neu hier, und ich werde verwendet, um Forum-Regeln, wie "nicht doublepost, nicht doublethread, nicht dies, Tu das".
  • Ich bin mir sicher, dass es gute frei verfügbare tree-view-data-Strukturen. Ich weiß nur persönlich nicht wissen, was Sie sind. Ich habe verwendet, tpSysTools vor, aber ich bin mir nicht sicher, wie gut spielt es sich mit modernen Delphi.
  • danke Kumpel. Ich sehe, wie die Dinge funktionieren hier. Ich würde nicht sagen, ich bin geschätzt, als ich nicht antwortete jemand anderes die Frage ist doch, und ich möchte eine Frage, die ich beantworten kann, dann erscheint irgendwann 🙂 ich dachte, Ihr Jungs Ihre eigenen Strukturen? Was ich getan habe (das funktioniert mit dem, was ich brauche), war ein Level-1-Datensatz und einen Level-2-Datensatzes und der level-1-Datensatz enthält eine TList von Level-2-Datensätze. Ist, dass eine besonders anständige Art und Weise tun?
  • Wahrscheinlich würde ich immer Schreibe meine eigenen. In der Tat, meine eigene Codebasis hat ein einheimischer Baum, geschrieben von einem Kollegen. Ihre Lösung ist nicht gut. Sie sollten zuerst studieren, wie eine verknüpfte Liste und gehen Sie dann zu Bäumen. Jeder Knoten verwaltet Verweise auf den nächsten Geschwisterknoten und sein erstes Kind, und möglicherweise auch seine Eltern. Das ist wirklich alles, was Sie brauchen. Haben Sie Lesen alle Bücher, die auf Datenstrukturen?
  • Naja, wenn meine Lösung tut was Sie soll, und das, was ich brauche, sehe ich keinen Grund, warum das hinzufügen von mehr Funktionen als ich benötige? 🙂 Nein, ich habe nicht alles Lesen, um ehrlich zu sein.
  • Auch wenn Sie TUN, um eine Arbeit zu beantworten, es ist nicht in Ihrem besten Interesse, noch im Interesse der Gemeinschaft sofort akzeptieren, eine Antwort. Es sei denn, das problem ist ganz einfach, wie Sie sollten, warten Sie einen Tag oder zwei, um zu akzeptieren eine Antwort: vielleicht eine bessere Antwort wird zeigen, bis! Dies ist in der Tat die Art von Frage, die Vorteile von mehreren Antworten. Zum Beispiel sah ich die Frage heute morgen nicht die Zeit haben, sich damit zu befassen, wenn ich zurück kam, sah ich das Häkchen für eine Antwort, die vermuten lässt, dass die Verwendung einer Datenbank. Ich hasse es, wenn Leute empfehlen, die Datenbanken so wenn Sie wäre ein Allheilmittel.
  • bitte Bearbeiten Sie die Frage und auch einige Informationen über die Daten in Ihrem Datensatz. Idealerweise wird die ganze Platte. Wenn Sie das tun, würde ich in der Lage sein, um wieder mein downvote (ich würde gerne zurückkehren, seit Sie das Häkchen in der Datenbank Antwort, aber ich kann nicht tun, da es schon mehr als 1 Stunde; wenn Sie Sie Bearbeiten, SO dass mir erlaubt, zu überprüfen, die Stimmen). Ich werde die -1 in +1 und vielleicht sogar eine Antwort auf meine eigene, wenn die anderen Experten nicht, tun Sie es zuerst.

InformationsquelleAutor Jeff | 2011-03-19
Schreibe einen Kommentar