====== TTreeNode — Knoten im Baum ====== Ein Eintrag in [[lyx_-_programmiersprache:vega:controls:ttreeview|TTreeView]]: Text, Kinder, Klappzustand und ein freier Wert für den Bezug zu eigenen Daten. Unit: ''Vega.Trees'' · Basis: keine — eigene Wurzel → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:guides:komponenten|Guide: Komponenten]] ---- ===== Vererbung ===== **Kette:** **TTreeNode** — eigene Wurzel, kein Vorfahr. Was diese Klasse kann, steht vollständig auf dieser Seite. **Direkte Nachfahren:** keine — diese Klasse wird nicht weiter abgeleitet. **Quelle:** ''vega/trees.lyx'' ---- ===== Verwendung ===== var wurzel: TTreeNode := tv.Add("Projekt"); var kind: TTreeNode := wurzel.Add("Quellen"); kind.Tag := 42; kind.ImageIndex := 1; wurzel.Expand(); if (kind.HasChildren()) { kind.Toggle(); } var t: pchar := kind.GetText(); kind.SetText("Quelltexte"); kind.EnsureVisible(); ---- ===== Besonderheiten ===== * **Kein Steuerelement** — ein Objekt im Baum. Angelegt wird über ''Add'' am Baum oder am Elternknoten. * ''Level()'' liefert die Tiefe (Wurzel = 0) — praktisch für Einrückung in eigenen Darstellungen. * ''ImageIndex'' und ''SelectedIndex'' erlauben zwei Symbole: eines im Normalzustand, eines für den gewählten Knoten. * ''EnsureVisible()'' klappt alle Eltern auf; das eigentliche Scrollen macht ''TTreeView.ScrollToNode''. * ''Tag'' ist der Weg vom Knoten zurück zu den eigenen Daten. ---- ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''Text'' | [[lyx_-_programmiersprache:vega:controls:ttextbuffer|TTextBuffer]] | Der Inhalt | eigen | | ''Parent'' | [[lyx_-_programmiersprache:vega:controls:ttreenode|TTreeNode]] | Zeichnerisches Elternteil | eigen | | ''Children'' | [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] | Kinder | eigen | | ''ChildCount'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Anzahl der Kinder | eigen | | ''Expanded'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Knoten ist aufgeklappt | eigen | | ''Tag'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Freier Wert für die Anwendung | eigen | | ''ImageIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Nummer des Symbols in der Sammlung der Leiste | eigen | | ''SelectedIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Symbol im ausgewählten Zustand | eigen | | ''Cut'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Ausschneidemarkierung und Ablageziel: Delphi malt beide anders. Hier stehen sie als Zustand bereit; das Zeichnen wertet Cut aus | eigen | | ''Data'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Frei verwendbarer Zeiger. Tag ist die Zahl, Data der Verweis — Delphi hat beides, und ein Knoten zeigt oft auf ein Objekt | eigen | | ''DropTarget'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Ziel eines laufenden Ziehvorgangs | eigen | | ''OverlayIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Bild, das über das eigene gelegt wird (Zustandsmarke) | eigen | | ''Owner'' | [[lyx_-_programmiersprache:vega:controls:ttreeview|TTreeView]] | Der Baum, in dem dieser Knoten hängt. Wird beim Einhaengen gesetzt — ohne ihn könnte ein Knoten weder Selected beantworten noch sich selbst sichtbar machen | eigen | | ''StateIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Symbol aus der Zustandsliste (StateImages) und überlagertes Symbol. -1 = keins, wie oben | eigen | ---- ===== Methoden ===== Alle Methoden, auch die geerbten. ^ Signatur ^ Zweck ^ Herkunft ^ | ''Create(text: pchar): void'' | Wird von ''Add'' aufgerufen | eigen | | ''Destroy(): void'' | Gibt eigene Ressourcen frei | eigen | | ''GetText(): pchar'' | Inhalt lesen | eigen | | ''SetText(s: pchar): void'' | Inhalt setzen | eigen | | ''Add(text: pchar): TTreeNode'' | Kind anlegen | eigen | | ''Child(i: int64): TTreeNode'' | Kind holen | eigen | | ''HasChildren(): bool'' | Hat Kinder | eigen | | ''Level(): int64'' | Tiefe im Baum | eigen | | ''Expand(): void'' | Aufklappen | eigen | | ''Collapse(): void'' | Zuklappen | eigen | | ''Toggle(): void'' | Umschalten | eigen | | ''EnsureVisible(): void'' | Eltern aufklappen | eigen | | ''AddNode(n: TTreeNode): void'' | Einen fertigen Knoten anhaengen. Getrennt von Add, weil Verschieben (MoveTo) denselben Weg braucht und dabei kein neuer entstehen darf | eigen | | ''Count(): int64'' | Delphi-Namen für dasselbe: Count ist die Kinderzahl, Items(i) das i-te Kind | eigen | | ''Delete(): void'' | Sich selbst aus dem Baum nehmen und freigeben. Der Wurzelknoten eines Baums laesst sich so nicht löschen — dafür gibt es TTreeView.Clear | eigen | | ''DeleteChildren(): void'' | Alle Kinder löschen und freigeben | eigen | | ''ExpandParents(): void'' | Alle Vorfahren aufklappen — Delphis ExpandParents | eigen | | ''GetFirstChild(): TTreeNode'' | Erstes Kind, oder ''0'' | eigen | | ''GetFirstSibling(): TTreeNode'' | Erster Knoten auf derselben Ebene | eigen | | ''GetLastChild(): TTreeNode'' | Letztes Kind, oder ''0'' | eigen | | ''GetLastSibling(): TTreeNode'' | Letzter Knoten auf derselben Ebene | eigen | | ''GetLastSubChild(): TTreeNode'' | Der letzte Knoten des ganzen Unterbaums — Delphis GetLastSubChild | eigen | | ''GetNext(): TTreeNode'' | Der nächste Knoten in der Reihenfolge des Baums: erst hinunter, dann zur Seite, dann beim Vorfahren zur Seite. Zugeklappt oder nicht ist dabei egal — das unterscheidet GetNext … | eigen | | ''GetNextSibling(): TTreeNode'' | Nächster Knoten auf derselben Ebene | eigen | | ''GetNextSkipChildren(): TTreeNode'' | Nächster Knoten, Kinder übersprungen | eigen | | ''GetNextVisible(): TTreeNode'' | Wie GetNext, aber nur über das, was man auch sieht: die Kinder eines zugeklappten Knotens werden übersprungen | eigen | | ''GetPrev(): TTreeNode'' | Vorheriger Knoten in der Reihenfolge des Baums | eigen | | ''GetPrevSibling(): TTreeNode'' | Vorheriger Knoten in der Reihenfolge des Baums | eigen | | ''GetPrevVisible(): TTreeNode'' | Vorheriger Knoten in der Reihenfolge des Baums | eigen | | ''GetTextPath(dst: TTextBuffer, trenner: pchar): void'' | Der Weg von der Wurzel bis hierher, mit dem Trenner dazwischen. Delphis GetTextPath — der übliche Weg, einen Knoten zu benennen | eigen | | ''HasAsParent(n: TTreeNode): bool'' | Haengt dieser Knoten (mittelbar) unter jenem? | eigen | | ''Index(): int64'' | Stelle unter den Geschwistern. -1, wenn der Knoten nirgends hängt | eigen | | ''IndexOf(n: TTreeNode): int64'' | Position eines Eintrags, oder ''-1'' | eigen | | ''Insert(index: int64, text: pchar): TTreeNode'' | An einer bestimmten Stelle einfuegen | eigen | | ''IsVisible(): bool'' | Ist der Knoten zu sehen, weil alle Vorfahren aufgeklappt sind? | eigen | | ''Items(i: int64): TTreeNode'' | Kind Nummer ''i'' | eigen | | ''MoveTo(ziel: TTreeNode): bool'' | Unter einen anderen Knoten hängen. Der eigene Unterbaum kommt mit; ein Knoten unter sich selbst wäre ein Ring und wird abgelehnt | eigen | | ''Selected(): bool'' | Ist dieser Knoten der ausgewählte seines Baums? | eigen | | ''SetOwnerRec(t: TTreeView): void'' | Den Baumverweis an sich und alle Nachkommen weitergeben | eigen | | ''SetSelected(v: bool): void'' | Wählt den Knoten aus oder ab | eigen | | ''SubTreeCount(): int64'' | Wie viele Knoten unter diesem hängen, alle Ebenen zusammen | eigen | ---- ===== Ereignisse ===== Keine. Letzte Aktualisierung: 2026-09-05 — gegen ''lyx-vcl/vega/*.lyx'' abgeglichen: Abschnitt „Vererbung" (Vorfahr-Kette, direkte Nachfahren, Quelldatei) ergänzt und die fehlenden Eigenschaften, Methoden und Ereignisse nachgetragen. Vorherige letzte Aktualisierung: 2026-08-19 — API maschinell aus ''Vega/Trees.lyx'' erhoben, Beispiel mit ''lyxc 1.1.3I'' übersetzt.